In this notebook we conduct exploratory factor analyses (EFAs) on the datasets for our studies of concepts of mental life, in which each participants judged the various mental capacities of a particular target entity. We analyze datasets for adults and children from each of our five field sites: the US, Ghana, Thailand, China, and Vanuatu.

This notebook contains secondary analyses, parallel to the results presented in the main text, in which we dropped participants who gave the same answer on every trial.

Adults

Samples

  country   n
       US 106
    Ghana  88
 Thailand 144
    China 120
  Vanuatu 120
    Total 578

Scale use

Factor retention: parallel analysis

Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 

Exploratory factor analysis

Factor loadings

Congruence

Bootstrapped congruence

Children

Samples

  country   n
       US 115
    Ghana 129
 Thailand 151
    China 120
  Vanuatu 128
    Total 643

Scale use

Factor retention: parallel analysis

Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  4  and the number of components =  2 
Parallel analysis suggests that the number of factors =  3  and the number of components =  2 

Exploratory factor analysis

Factor loadings

Congruence

See All samples, below.

Bootstrapped congruence

All samples

Congruence

Jaccard Similarity

Developmental comparisons

Error: width must be of length 1 or ncol - 1

Variance accounted for

Interfactor correlations

LS0tCnRpdGxlOiAiQ29uY2VwdHMgb2YgbWVudGFsIGxpZmUgYWNyb3NzIGN1bHR1cmVzOiBTZWNvbmRhcnkgYW5hbHlzaXMiCnN1YnRpdGxlOiAiRXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzIHVzaW5nIGZ1bGwgZGF0YXNldHMsIHRldHJhY2hvcmljIGNvcnJlbGF0aW9ucywgYW5kIG9ibGlxdWUgdHJhbnNmb3JtYXRpb25zIgphdXRob3JzOiAiKipLYXJhIFdlaXNtYW4qKiwgQ3Jpc3RpbmUgSC4gTGVnYXJlLCBSYWNoZWwgRS4gU21pdGgsIFZpdmlhbiBBLiBEem9rb3RvLCBGZWxpY2l0eSBBdWxpbm8sIEVtaWx5IE5nLCBKb2huIEMuIER1bGluLCBOaWNvbGUgUm9zcy1aZWhuZGVyLCBKb3NodWEgRC4gQnJhaGluc2t5LCAmIFRhbnlhIE0uIEx1aHJtYW5uIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQotLS0KCmBgYHtyIHNldHVwfQprbml0cjo6b3B0c19jaHVuayRzZXQobWVzc2FnZSA9IEYsIHdhcm5pbmcgPSBGQUxTRSkKYGBgCgpJbiB0aGlzIG5vdGVib29rIHdlIGNvbmR1Y3QgZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2VzIChFRkFzKSBvbiB0aGUgZGF0YXNldHMgZm9yIG91ciBzdHVkaWVzIG9mIGNvbmNlcHRzIG9mIG1lbnRhbCBsaWZlLCBpbiB3aGljaCBlYWNoIHBhcnRpY2lwYW50cyBqdWRnZWQgdGhlIHZhcmlvdXMgbWVudGFsIGNhcGFjaXRpZXMgb2YgYSBwYXJ0aWN1bGFyIHRhcmdldCBlbnRpdHkuIFdlIGFuYWx5emUgZGF0YXNldHMgZm9yIGFkdWx0cyBhbmQgY2hpbGRyZW4gZnJvbSBlYWNoIG9mIG91ciBmaXZlIGZpZWxkIHNpdGVzOiB0aGUgVVMsIEdoYW5hLCBUaGFpbGFuZCwgQ2hpbmEsIGFuZCBWYW51YXR1LiAKClRoaXMgbm90ZWJvb2sgY29udGFpbnMgc2Vjb25kYXJ5IGFuYWx5c2VzLCBwYXJhbGxlbCB0byB0aGUgcmVzdWx0cyBwcmVzZW50ZWQgaW4gdGhlIG1haW4gdGV4dCwgaW4gd2hpY2ggd2UgZHJvcHBlZCBwYXJ0aWNpcGFudHMgd2hvIGdhdmUgdGhlIHNhbWUgYW5zd2VyIG9uIGV2ZXJ5IHRyaWFsLiAKCmBgYHtyLCBlY2hvID0gRiwgbWVzc2FnZSA9IEZ9CnNvdXJjZSgiLi9zY3JpcHRzL2RlcGVuZGVuY2llcy5SIikKc291cmNlKCIuL3NjcmlwdHMvY3VzdG9tX2Z1bnMuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL3Zhcl9yZWNvZGVfY29udHJhc3QuUiIpCmBgYAoKYGBge3J9CiMgZnVuY3Rpb24gZm9yIGVsaW1pbmF0aW5nIHBhcnRpY2lwYW50cyB3aG8gZ2F2ZSB0aGUgc2FtZSBhbnN3ZXIgb24gZXZlcnkgdHJpYWwKZGV0ZWN0X25vX3Zhcl9mdW4gPC0gZnVuY3Rpb24oZGYsIHJlbW92ZV9uYSA9IFQpIHsKICAKICBkX2lkIDwtIGRmIAogIAogIGlmIChyZW1vdmVfbmEpIHsgZF9pZCA8LSBkX2lkICU+JSBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgfQogIAogIGRfaWQgPC0gZF9pZCAlPiUKICAgIGRpc3RpbmN0KHN1YmpfaWQsIHJlc3BvbnNlKSAlPiUKICAgIGNvdW50KHN1YmpfaWQpICU+JQogICAgZmlsdGVyKG4gPT0gMSkKICAKICBkX3JlcyA8LSBkZiAlPiUKICAgIGZpbHRlcighc3Vial9pZCAlaW4lIGRfaWQkc3Vial9pZCkKICAKICByZXR1cm4oZF9yZXMpCn0KYGBgCgpgYGB7ciBkYXRhfQojIHJlYWQgaW4gZGF0YSwgc2hvcnRlbiAiZmVlbCBzaWNrLCIgYW5kIGxpbWl0IHRvIHVuaXZlcnNhbCB0YXJnZXRzIGFuZCBxdWVzdGlvbnM6IGFkdWx0cwpkX3VzX2FkdWx0cyA8LSByZWFkX2NzdigiLi4vZGF0YS9kX3VzX2FkdWx0cy5jc3YiKSAlPiUKICBmaWx0ZXIodGFyZ2V0ICVpbiUgbGV2ZWxzX3RhcmdldF91bml2LCBxdWVzdGlvbl9jYXQgPT0gInVuaXZlcnNhbCIpICU+JQogIG11dGF0ZShxdWVzdGlvbiA9IGdzdWIoIlxcLCAuKiQiLCAiIFxcWy4uLlxcXSIsIHF1ZXN0aW9uKSkgJT4lCiAgZGV0ZWN0X25vX3Zhcl9mdW4oKQpkX2doX2FkdWx0cyA8LSByZWFkX2NzdigiLi4vZGF0YS9kX2doX2FkdWx0cy5jc3YiKSAlPiUKICBmaWx0ZXIodGFyZ2V0ICVpbiUgbGV2ZWxzX3RhcmdldF91bml2LCBxdWVzdGlvbl9jYXQgPT0gInVuaXZlcnNhbCIpICU+JQogIG11dGF0ZShxdWVzdGlvbiA9IGdzdWIoIlxcLCAuKiQiLCAiIFxcWy4uLlxcXSIsIHF1ZXN0aW9uKSkgJT4lCiAgZGV0ZWN0X25vX3Zhcl9mdW4oKQpkX3RoX2FkdWx0cyA8LSByZWFkX2NzdigiLi4vZGF0YS9kX3RoX2FkdWx0cy5jc3YiKSAlPiUKICBmaWx0ZXIodGFyZ2V0ICVpbiUgbGV2ZWxzX3RhcmdldF91bml2LCBxdWVzdGlvbl9jYXQgPT0gInVuaXZlcnNhbCIpICU+JQogIG11dGF0ZShxdWVzdGlvbiA9IGdzdWIoIlxcLCAuKiQiLCAiIFxcWy4uLlxcXSIsIHF1ZXN0aW9uKSkgJT4lCiAgZGV0ZWN0X25vX3Zhcl9mdW4oKQpkX2NoX2FkdWx0cyA8LSByZWFkX2NzdigiLi4vZGF0YS9kX2NoX2FkdWx0cy5jc3YiKSAlPiUKICBmaWx0ZXIodGFyZ2V0ICVpbiUgbGV2ZWxzX3RhcmdldF91bml2LCBxdWVzdGlvbl9jYXQgPT0gInVuaXZlcnNhbCIpICU+JQogIG11dGF0ZShxdWVzdGlvbiA9IGdzdWIoIlxcLCAuKiQiLCAiIFxcWy4uLlxcXSIsIHF1ZXN0aW9uKSkgJT4lCiAgZGV0ZWN0X25vX3Zhcl9mdW4oKQpkX3Z0X2FkdWx0cyA8LSByZWFkX2NzdigiLi4vZGF0YS9kX3Z0X2FkdWx0cy5jc3YiKSAlPiUKICBmaWx0ZXIodGFyZ2V0ICVpbiUgbGV2ZWxzX3RhcmdldF91bml2LCBxdWVzdGlvbl9jYXQgPT0gInVuaXZlcnNhbCIpICU+JQogIG11dGF0ZShxdWVzdGlvbiA9IGdzdWIoIlxcLCAuKiQiLCAiIFxcWy4uLlxcXSIsIHF1ZXN0aW9uKSkgJT4lCiAgZGV0ZWN0X25vX3Zhcl9mdW4oKQoKIyByZWFkIGluIGRhdGEsIHNob3J0ZW4gImZlZWwgc2ljaywiIGFuZCBsaW1pdCB0byB1bml2ZXJzYWwgdGFyZ2V0cyBhbmQgcXVlc3Rpb25zOiBjaGlsZHJlbgpkX3VzX2NoaWxkcmVuIDwtIHJlYWRfY3N2KCIuLi9kYXRhL2RfdXNfY2hpbGRyZW4uY3N2IikgJT4lCiAgZmlsdGVyKHRhcmdldCAlaW4lIGxldmVsc190YXJnZXRfdW5pdiwgcXVlc3Rpb25fY2F0ID09ICJ1bml2ZXJzYWwiKSAlPiUKICBtdXRhdGUocXVlc3Rpb24gPSBnc3ViKCJcXCwgLiokIiwgIiBcXFsuLi5cXF0iLCBxdWVzdGlvbikpICU+JQogIGRldGVjdF9ub192YXJfZnVuKCkKZF9naF9jaGlsZHJlbiA8LSByZWFkX2NzdigiLi4vZGF0YS9kX2doX2NoaWxkcmVuLmNzdiIpICU+JQogIGZpbHRlcih0YXJnZXQgJWluJSBsZXZlbHNfdGFyZ2V0X3VuaXYsIHF1ZXN0aW9uX2NhdCA9PSAidW5pdmVyc2FsIikgJT4lCiAgbXV0YXRlKHF1ZXN0aW9uID0gZ3N1YigiXFwsIC4qJCIsICIgXFxbLi4uXFxdIiwgcXVlc3Rpb24pKSAlPiUKICBkZXRlY3Rfbm9fdmFyX2Z1bigpCmRfdGhfY2hpbGRyZW4gPC0gcmVhZF9jc3YoIi4uL2RhdGEvZF90aF9jaGlsZHJlbi5jc3YiKSAlPiUKICBmaWx0ZXIodGFyZ2V0ICVpbiUgbGV2ZWxzX3RhcmdldF91bml2LCBxdWVzdGlvbl9jYXQgPT0gInVuaXZlcnNhbCIpICU+JQogIG11dGF0ZShxdWVzdGlvbiA9IGdzdWIoIlxcLCAuKiQiLCAiIFxcWy4uLlxcXSIsIHF1ZXN0aW9uKSkgJT4lCiAgZGV0ZWN0X25vX3Zhcl9mdW4oKQpkX2NoX2NoaWxkcmVuIDwtIHJlYWRfY3N2KCIuLi9kYXRhL2RfY2hfY2hpbGRyZW4uY3N2IikgJT4lCiAgZmlsdGVyKHRhcmdldCAlaW4lIGxldmVsc190YXJnZXRfdW5pdiwgcXVlc3Rpb25fY2F0ID09ICJ1bml2ZXJzYWwiKSAlPiUKICBtdXRhdGUocXVlc3Rpb24gPSBnc3ViKCJcXCwgLiokIiwgIiBcXFsuLi5cXF0iLCBxdWVzdGlvbikpICU+JQogIGRldGVjdF9ub192YXJfZnVuKCkKZF92dF9jaGlsZHJlbiA8LSByZWFkX2NzdigiLi4vZGF0YS9kX3Z0X2NoaWxkcmVuLmNzdiIpICU+JQogIGZpbHRlcih0YXJnZXQgJWluJSBsZXZlbHNfdGFyZ2V0X3VuaXYsIHF1ZXN0aW9uX2NhdCA9PSAidW5pdmVyc2FsIikgJT4lCiAgbXV0YXRlKHF1ZXN0aW9uID0gZ3N1YigiXFwsIC4qJCIsICIgXFxbLi4uXFxdIiwgcXVlc3Rpb24pKSAlPiUKICAjIGZpbHRlciBvdXQgcGFydGljaXBhbnRzIG91dHNpZGUgb2YgdGhlIGFnZSByYW5nZQogIGZpbHRlcigoYWdlID49IDYgJiBhZ2UgPD0gMTIpIHwgaXMubmEoYWdlKSkgJT4lCiAgZGV0ZWN0X25vX3Zhcl9mdW4oKQpgYGAKCmBgYHtyIHdpZGV9CiMgbWFrZSB3aWRlLWZvcm0gZGF0YXNldHMgZm9yIEVGQTogYWR1bHRzCmRfdXNfYWR1bHRzX3cgPC0gd2lkZV9kZl9mdW4oZF91c19hZHVsdHMpCmRfZ2hfYWR1bHRzX3cgPC0gd2lkZV9kZl9mdW4oZF9naF9hZHVsdHMpCmRfdGhfYWR1bHRzX3cgPC0gd2lkZV9kZl9mdW4oZF90aF9hZHVsdHMpCmRfY2hfYWR1bHRzX3cgPC0gd2lkZV9kZl9mdW4oZF9jaF9hZHVsdHMpCmRfdnRfYWR1bHRzX3cgPC0gd2lkZV9kZl9mdW4oZF92dF9hZHVsdHMpCgojIG1ha2Ugd2lkZS1mb3JtIGRhdGFzZXRzIGZvciBFRkE6IGNoaWxkcmVuCmRfdXNfY2hpbGRyZW5fdyA8LSB3aWRlX2RmX2Z1bihkX3VzX2NoaWxkcmVuKQpkX2doX2NoaWxkcmVuX3cgPC0gd2lkZV9kZl9mdW4oZF9naF9jaGlsZHJlbikKIyBkX2doX2VuZ19jaGlsZHJlbl93IDwtIHdpZGVfZGZfZnVuKGRfZ2hfZW5nX2NoaWxkcmVuKQpkX3RoX2NoaWxkcmVuX3cgPC0gd2lkZV9kZl9mdW4oZF90aF9jaGlsZHJlbikKZF9jaF9jaGlsZHJlbl93IDwtIHdpZGVfZGZfZnVuKGRfY2hfY2hpbGRyZW4pCmRfdnRfY2hpbGRyZW5fdyA8LSB3aWRlX2RmX2Z1bihkX3Z0X2NoaWxkcmVuKQpgYGAKCgojIEFkdWx0cwoKIyMgU2FtcGxlcwoKYGBge3Igc2FtcGxlcyBhZHVsdHN9CmJpbmRfcm93cyhkX3VzX2FkdWx0cywgZF9naF9hZHVsdHMsIGRfdGhfYWR1bHRzLCBkX2NoX2FkdWx0cywgZF92dF9hZHVsdHMpICU+JQogIG11dGF0ZShjb3VudHJ5ID0gZmFjdG9yKGNvdW50cnksIGxldmVscyA9IGxldmVsc19jb3VudHJ5KSkgJT4lCiAgZGlzdGluY3QoY291bnRyeSwgc3Vial9pZCkgJT4lCiAgY291bnQoY291bnRyeSkgJT4lCiAgamFuaXRvcjo6YWRvcm5fdG90YWxzKCkKYGBgCgojIyBTY2FsZSB1c2UKCmBgYHtyIHNjYWxlIHVzZSBtZWFuIG92ZXJhbGwgYWR1bHRzfQpiaW5kX3Jvd3MoZF91c19hZHVsdHMsIGRfZ2hfYWR1bHRzLCBkX3RoX2FkdWx0cywgZF9jaF9hZHVsdHMsIGRfdnRfYWR1bHRzKSAlPiUKICBtdXRhdGUoY291bnRyeSA9IGZhY3Rvcihjb3VudHJ5LCBsZXZlbHMgPSBsZXZlbHNfY291bnRyeSksCiAgICAgICAgIHJlc3BvbnNlX2NhdCA9IHJlY29kZV9mYWN0b3IocmVzcG9uc2VfY2F0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyIgPSAibm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJraW5kIG9mIiA9ICJraW5kIG9mIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieWVzIiA9ICJ5ZXMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWlzc2luZyA9ICJtaXNzaW5nIGRhdGEiKSkgJT4lCiAgY291bnQoY291bnRyeSwgcmVzcG9uc2VfY2F0KSAlPiUKICBjb21wbGV0ZShyZXNwb25zZV9jYXQsIG5lc3RpbmcoY291bnRyeSksIGZpbGwgPSBsaXN0KG4gPSAwKSkgJT4lCiAgZ3JvdXBfYnkoY291bnRyeSkgJT4lCiAgbXV0YXRlKHByb3AgPSBuL3N1bShuLCBuYS5ybSA9IFQpKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgc2VsZWN0KC1uKSAlPiUKICBzcHJlYWQocmVzcG9uc2VfY2F0LCBwcm9wKSAlPiUKICBqYW5pdG9yOjphZG9ybl9wY3RfZm9ybWF0dGluZyhkaWdpdHMgPSAyKQpgYGAKCiMjIEZhY3RvciByZXRlbnRpb246IHBhcmFsbGVsIGFuYWx5c2lzCgpgYGB7ciBwYXJhbGxlbCBkaXN0IGFkdWx0cywgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDAuNX0KIyBOT1RFOiBIZXJlIGlzIGRpc3RyaWJ1dGlvbiBvdmVyIG91dGNvbWVzIG9mIHBhcmFsbGVsIGFuYWx5c2lzIHdpdGggMTAwIGl0ZXJhdGlvbnMuIFdlJ2xsIGNob29zZSB0aGUgbWVkaWFuIG51bWJlciBvZiBmYWN0b3JzLgoKaWYgKGZpbGUuZXhpc3RzKCIuLi9yZXN1bHRzL3BhX291dGNvbWVzX2Rpc3RfYWR1bHRzX2Ryb3AuUkRTIikpIHsKICAKICBwYV9vdXRjb21lc19kaXN0X2FkdWx0cyA8LSByZWFkUkRTKCIuLi9yZXN1bHRzL3BhX291dGNvbWVzX2Rpc3RfYWR1bHRzX2Ryb3AuUkRTIikKICAKfSBlbHNlIHsKICAKICBwYV9vdXRjb21lc19kaXN0X2FkdWx0cyA8LSBkYXRhLmZyYW1lKHVzID0gTlVMTCwgZ2ggPSBOVUxMLCB0aCA9IE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IE5VTEwsIHZ0ID0gTlVMTCkKICAKICBzZXQuc2VlZCg1NDMyMSkKICBuX2NvcmVzIDwtIHBhcmFsbGVsOjpkZXRlY3RDb3JlcygpCiAgb3B0aW9ucyhtYy5jb3JlcyA9IG5fY29yZXMpCiAgCiAgZm9yIChpIGluIDE6MTAwKSB7CiAgICBwYV9vdXRjb21lc19kaXN0X2FkdWx0c1tpLCAidXMiXSA8LSBmYS5wYXJhbGxlbChkX3VzX2FkdWx0c193LCBwbG90ID0gRikkbmZhY3QKICAgIHBhX291dGNvbWVzX2Rpc3RfYWR1bHRzW2ksICJnaCJdIDwtIGZhLnBhcmFsbGVsKGRfZ2hfYWR1bHRzX3csIHBsb3QgPSBGKSRuZmFjdCAgICAgCiAgICBwYV9vdXRjb21lc19kaXN0X2FkdWx0c1tpLCAidGgiXSA8LSBmYS5wYXJhbGxlbChkX3RoX2FkdWx0c193LCBwbG90ID0gRikkbmZhY3QKICAgIHBhX291dGNvbWVzX2Rpc3RfYWR1bHRzW2ksICJjaCJdIDwtIGZhLnBhcmFsbGVsKGRfY2hfYWR1bHRzX3csIHBsb3QgPSBGKSRuZmFjdAogICAgcGFfb3V0Y29tZXNfZGlzdF9hZHVsdHNbaSwgInZ0Il0gPC0gZmEucGFyYWxsZWwoZF92dF9hZHVsdHNfdywgcGxvdCA9IEYpJG5mYWN0CiAgfQogIAogIHNhdmVSRFMocGFfb3V0Y29tZXNfZGlzdF9hZHVsdHMsIGZpbGUgPSAiLi4vcmVzdWx0cy9wYV9vdXRjb21lc19kaXN0X2FkdWx0c19kcm9wLlJEUyIpCn0KCiMgcGxvdApwYV9vdXRjb21lc19kaXN0X2FkdWx0cyAlPiUKICByb3duYW1lc190b19jb2x1bW4oIml0ZXIiKSAlPiUKICBnYXRoZXIoY291bnRyeSwgbmZhY3QsIC1pdGVyKSAlPiUKICBtdXRhdGUoY291bnRyeSA9IGZhY3Rvcihjb3VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoInVzIiwgImdoIiwgInRoIiwgImNoIiwgInZ0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gbGV2ZWxzX2NvdW50cnkpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBuZmFjdCkpICsKICBmYWNldF9ncmlkKH4gY291bnRyeSkgKwogIGdlb21fYmFyKHN0YXQgPSAiY291bnQiKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoMSwgbWF4KHBhX291dGNvbWVzX2Rpc3RfYWR1bHRzKSArIDEpLAogICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBzZXEoMCwgMTAwLCAxKSkgKwogIGxhYnMoeCA9ICJOdW1iZXIgb2YgZmFjdG9ycyBzdWdnZXN0ZWQgYnkgZmEucGFyYWxsZWwoKSIpCmBgYAoKIyMgRXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzCgpgYGB7ciBlZmEgYWR1bHRzfQpzZXQuc2VlZCg1NDMyMSkKCiMgZG8gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzOiBhZHVsdHMKZWZhX3VzX2FkdWx0cyA8LSBmYV9mdW4oZF91c19hZHVsdHNfdywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG1lZGlhbihwYV9vdXRjb21lc19kaXN0X2FkdWx0cyR1cyksCiAgICAgICAgICAgICAgICAgICAgICAgIGNob3Nlbl9uLml0ZXIgPSAxMDAwLAogICAgICAgICAgICAgICAgICAgICAgICBjaG9zZW5fcm90ID0gIm9ibGltaW4iKQpjb2xuYW1lcyhlZmFfdXNfYWR1bHRzJGxvYWRpbmdzKSA8LSBwYXN0ZTAoInVzQURVTFRTXyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbmFtZXMoZWZhX3VzX2FkdWx0cyRsb2FkaW5ncykpCgplZmFfZ2hfYWR1bHRzIDwtIGZhX2Z1bihkX2doX2FkdWx0c193LCAKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG1lZGlhbihwYV9vdXRjb21lc19kaXN0X2FkdWx0cyRnaCksCiAgICAgICAgICAgICAgICAgICAgICAgIGNob3Nlbl9uLml0ZXIgPSAxMDAwLAogICAgICAgICAgICAgICAgICAgICAgICBjaG9zZW5fcm90ID0gIm9ibGltaW4iKQpjb2xuYW1lcyhlZmFfZ2hfYWR1bHRzJGxvYWRpbmdzKSA8LSBwYXN0ZTAoImdoQURVTFRTXyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbmFtZXMoZWZhX2doX2FkdWx0cyRsb2FkaW5ncykpCgplZmFfdGhfYWR1bHRzIDwtIGZhX2Z1bihkX3RoX2FkdWx0c193LCAKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG1lZGlhbihwYV9vdXRjb21lc19kaXN0X2FkdWx0cyR0aCksCiAgICAgICAgICAgICAgICAgICAgICAgIGNob3Nlbl9uLml0ZXIgPSAxMDAwLAogICAgICAgICAgICAgICAgICAgICAgICBjaG9zZW5fcm90ID0gIm9ibGltaW4iKQpjb2xuYW1lcyhlZmFfdGhfYWR1bHRzJGxvYWRpbmdzKSA8LSBwYXN0ZTAoInRoQURVTFRTXyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbmFtZXMoZWZhX3RoX2FkdWx0cyRsb2FkaW5ncykpCgplZmFfY2hfYWR1bHRzIDwtIGZhX2Z1bihkX2NoX2FkdWx0c193LCAKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG1lZGlhbihwYV9vdXRjb21lc19kaXN0X2FkdWx0cyRjaCksCiAgICAgICAgICAgICAgICAgICAgICAgIGNob3Nlbl9uLml0ZXIgPSAxMDAwLAogICAgICAgICAgICAgICAgICAgICAgICBjaG9zZW5fcm90ID0gIm9ibGltaW4iKQpjb2xuYW1lcyhlZmFfY2hfYWR1bHRzJGxvYWRpbmdzKSA8LSBwYXN0ZTAoImNoQURVTFRTXyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbmFtZXMoZWZhX2NoX2FkdWx0cyRsb2FkaW5ncykpCgplZmFfdnRfYWR1bHRzIDwtIGZhX2Z1bihkX3Z0X2FkdWx0c193LCAKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG1lZGlhbihwYV9vdXRjb21lc19kaXN0X2FkdWx0cyR2dCksCiAgICAgICAgICAgICAgICAgICAgICAgIGNob3Nlbl9uLml0ZXIgPSAxMDAwLAogICAgICAgICAgICAgICAgICAgICAgICBjaG9zZW5fcm90ID0gIm9ibGltaW4iKQpjb2xuYW1lcyhlZmFfdnRfYWR1bHRzJGxvYWRpbmdzKSA8LSBwYXN0ZTAoInZ0QURVTFRTXyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbmFtZXMoZWZhX3Z0X2FkdWx0cyRsb2FkaW5ncykpCmBgYAoKYGBge3IgZmFjdG9yIG5hbWVzIGFkdWx0c30KZmFjdG9yX25hbWVzX2FkdWx0cyA8LSBkYXRhLmZyYW1lKGZhY3RvciA9IGMoY29sbmFtZXMoZWZhX3VzX2FkdWx0cyRsb2FkaW5ncyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG5hbWVzKGVmYV9naF9hZHVsdHMkbG9hZGluZ3MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xuYW1lcyhlZmFfdGhfYWR1bHRzJGxvYWRpbmdzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbmFtZXMoZWZhX2NoX2FkdWx0cyRsb2FkaW5ncyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG5hbWVzKGVmYV92dF9hZHVsdHMkbG9hZGluZ3MpKSkgJT4lCiAgbXV0YXRlKGFnZV9ncm91cCA9ICJhZHVsdHMiKSAlPiUKICBtdXRhdGUoY291bnRyeSA9IGNhc2Vfd2hlbihncmVwbCgiXnVzIiwgZmFjdG9yKSB+ICJVUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcGwoIl5naCIsIGZhY3RvcikgfiAiR2hhbmEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZXBsKCJedGgiLCBmYWN0b3IpIH4gIlRoYWlsYW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVwbCgiXmNoIiwgZmFjdG9yKSB+ICJDaGluYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcGwoIl52dCIsIGZhY3RvcikgfiAiVmFudWF0dSIpLAogICAgICAgICBjb3VudHJ5ID0gZmFjdG9yKGNvdW50cnksIGxldmVsc19jb3VudHJ5KSkgJT4lCiAgbXV0YXRlKGZhY3Rvcl9uYW1lID0gZ3N1YigiXnVzIiwgIlVTICIsIGZhY3RvciksCiAgICAgICAgIGZhY3Rvcl9uYW1lID0gZ3N1YigiXmdoIiwgIkdoLiAiLCBmYWN0b3JfbmFtZSksCiAgICAgICAgIGZhY3Rvcl9uYW1lID0gZ3N1YigiXnRoIiwgIlRoLiAiLCBmYWN0b3JfbmFtZSksCiAgICAgICAgIGZhY3Rvcl9uYW1lID0gZ3N1YigiXmNoIiwgIkNoLiAiLCBmYWN0b3JfbmFtZSksCiAgICAgICAgIGZhY3Rvcl9uYW1lID0gZ3N1YigiXnZ0IiwgIlZhLiAiLCBmYWN0b3JfbmFtZSksCiAgICAgICAgIGZhY3Rvcl9uYW1lID0gZ3N1YigiQURVTFRTIiwgImFkdWx0cyIsIGZhY3Rvcl9uYW1lKSwKICAgICAgICAgZmFjdG9yX25hbWUgPSBnc3ViKCJfRiIsICIgRmFjdG9yICIsIGZhY3Rvcl9uYW1lKSkgJT4lCiAgbXV0YXRlKGZhY3Rvcl9kZXNjcmlwdCA9IHJlY29kZShmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c0FEVUxUU19GMSA9ICJCb2R5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzQURVTFRTX0YyID0gIkhlYXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzQURVTFRTX0YzID0gIk1pbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2hBRFVMVFNfRjEgPSAiSW5uZXIgc3BoZXJlIChtaW5kLWxpa2UpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdoQURVTFRTX0YyID0gIkJvZHktbGlrZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaEFEVUxUU19GMyA9ICJJbnRlcnBlcnNvbmFsLCByZWxpZ2lvdXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhBRFVMVFNfRjEgPSAiQm9keS1saWtlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoQURVTFRTX0YyID0gIkhlYXJ0LWxpa2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhBRFVMVFNfRjMgPSAiTWluZC1saWtlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoQURVTFRTX0YxID0gIkhlYXJ0LWxpa2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hBRFVMVFNfRjIgPSAiQm9keS1saWtlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoQURVTFRTX0YzID0gIk1pbmQtbGlrZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dEFEVUxUU19GMSA9ICJIYXJtb255IChtaW5kLWxpa2UsIGhlYXJ0LWxpa2UpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ0QURVTFRTX0YyID0gIlNpbiAoYm9keS1saWtlKSIpLAogICAgICAgICBmYWN0b3JfbGFiZGVzY3JpcHQgPSBwYXN0ZShnc3ViKCIuKl9GIiwgIkYiLCBmYWN0b3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWN0b3JfZGVzY3JpcHQsIHNlcCA9ICI6ICIpKQpgYGAKCiMjIEZhY3RvciBsb2FkaW5ncwoKYGBge3Igb3JkZXIgYWR1bHRzfQojIG9yZGVyIGNhcGFjaXRpZXM6IGFkdWx0cwpvcmRlcl91c19hZHVsdHMgPC0gZmEuc29ydChlZmFfdXNfYWR1bHRzKSRsb2FkaW5nc1tdICU+JSByb3duYW1lcygpCm9yZGVyX2doX2FkdWx0cyA8LSBmYS5zb3J0KGVmYV9naF9hZHVsdHMpJGxvYWRpbmdzW10gJT4lIHJvd25hbWVzKCkKb3JkZXJfdGhfYWR1bHRzIDwtIGZhLnNvcnQoZWZhX3RoX2FkdWx0cykkbG9hZGluZ3NbXSAlPiUgcm93bmFtZXMoKQpvcmRlcl9jaF9hZHVsdHMgPC0gZmEuc29ydChlZmFfY2hfYWR1bHRzKSRsb2FkaW5nc1tdICU+JSByb3duYW1lcygpCm9yZGVyX3Z0X2FkdWx0cyA8LSBmYS5zb3J0KGVmYV92dF9hZHVsdHMpJGxvYWRpbmdzW10gJT4lIHJvd25hbWVzKCkKYGBgCgpgYGB7ciBsb2FkaW5ncyBhZHVsdHN9CiMgY29tcGlsZSBsb2FkaW5nczogYWR1bHRzCmxvYWRpbmdzX2FkdWx0cyA8LSBiaW5kX3Jvd3MoCiAgbG9hZGluZ3NfZnVuKGVmYV91c19hZHVsdHMpICU+JSBtdXRhdGUoY291bnRyeSA9ICJVUyIpLAogIGxvYWRpbmdzX2Z1bihlZmFfZ2hfYWR1bHRzKSAlPiUgbXV0YXRlKGNvdW50cnkgPSAiR2hhbmEiKSwKICBsb2FkaW5nc19mdW4oZWZhX3RoX2FkdWx0cykgJT4lIG11dGF0ZShjb3VudHJ5ID0gIlRoYWlsYW5kIiksCiAgbG9hZGluZ3NfZnVuKGVmYV9jaF9hZHVsdHMpICU+JSBtdXRhdGUoY291bnRyeSA9ICJDaGluYSIpLAogIGxvYWRpbmdzX2Z1bihlZmFfdnRfYWR1bHRzKSAlPiUgbXV0YXRlKGNvdW50cnkgPSAiVmFudWF0dSIpKSAlPiUKICBtdXRhdGUoY291bnRyeSA9IGZhY3Rvcihjb3VudHJ5LCBsZXZlbHMgPSBsZXZlbHNfY291bnRyeSksCiAgICAgICAgIGNhcGFjaXR5X29yZF91cyA9IGZhY3RvcihjYXBhY2l0eSwgbGV2ZWxzID0gb3JkZXJfdXNfYWR1bHRzKSwKICAgICAgICAgY2FwYWNpdHlfb3JkX2doID0gZmFjdG9yKGNhcGFjaXR5LCBsZXZlbHMgPSBvcmRlcl9naF9hZHVsdHMpLAogICAgICAgICBjYXBhY2l0eV9vcmRfdGggPSBmYWN0b3IoY2FwYWNpdHksIGxldmVscyA9IG9yZGVyX3RoX2FkdWx0cyksCiAgICAgICAgIGNhcGFjaXR5X29yZF9jaCA9IGZhY3RvcihjYXBhY2l0eSwgbGV2ZWxzID0gb3JkZXJfY2hfYWR1bHRzKSwKICAgICAgICAgY2FwYWNpdHlfb3JkX3Z0ID0gZmFjdG9yKGNhcGFjaXR5LCBsZXZlbHMgPSBvcmRlcl92dF9hZHVsdHMpKSAlPiUKICBhcnJhbmdlKGNvdW50cnksIGZhY3RvciwgZGVzYyhhYnMobG9hZGluZykpLCBjYXBhY2l0eSkgJT4lCiAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICBsZWZ0X2pvaW4oZmFjdG9yX25hbWVzX2FkdWx0cykKYGBgCgpgYGB7ciBoZWF0bWFwIGFkdWx0cywgZmlnLndpZHRoID0gNSwgZmlnLmFzcCA9IDAuN30KIyBtYWtlIGhlYXRtYXAgZmlndXJlOiBhZHVsdHMKbG9hZGluZ3NfYWR1bHRzICU+JQogIG11dGF0ZShmYWN0b3JfbnVtID0gYXMubnVtZXJpYyhnc3ViKCIuKkYiLCAiIiwgZmFjdG9yKSkpICU+JQogIG11dGF0ZShzYW1wbGUgPSBwYXN0ZShjb3VudHJ5LCAiYWR1bHRzIiwgc2VwID0gIlxuIikpICU+JQogIGxlZnRfam9pbihmYWN0b3JfbmFtZXNfYWR1bHRzKSAlPiUKICBtdXRhdGUoY291bnRyeSA9IGZhY3Rvcihjb3VudHJ5LCBsZXZlbHMgPSBsZXZlbHNfY291bnRyeSkpICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIoZmFjdG9yX2xhYmRlc2NyaXB0LCBmYWN0b3JfbnVtKSwgCiAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhjYXBhY2l0eV9vcmRfdXMpKSwKICAgICAgICAgICAgICMgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2MoY2FwYWNpdHlfb3JkX2VjKSksIAogICAgICAgICAgICAgIyB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhjYXBhY2l0eV9vcmRfZ2gpKSwKICAgICAgICAgICAgICMgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2MoY2FwYWNpdHlfb3JkX3RoKSksCiAgICAgICAgICAgICAjIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKGNhcGFjaXR5X29yZF9jaCkpLAogICAgICAgICAgICAgIyB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhjYXBhY2l0eV9vcmRfdnQpKSwKICAgICAgICAgICAgIGZpbGwgPSBsb2FkaW5nKSkgKwogIGZhY2V0X2dyaWQofiByZW9yZGVyKHNhbXBsZSwgYXMubnVtZXJpYyhjb3VudHJ5KSksIHNjYWxlcyA9ICJmcmVlIiwgc3BhY2UgPSAiZnJlZSIpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMC4yKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gMykgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAyMCwgYmFyd2lkdGggPSAwLjUpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSksCiAgICAgICAgcGFuZWwuc3BhY2luZy54ID0gdW5pdCgwLjgsICJsaW5lcyIpLAogICAgICAgIHN0cmlwLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTAsIGZhY2UgPSAiYm9sZCIpKSArCiAgbGFicyh4ID0gTlVMTCwgeSA9ICJDYXBhY2l0eSIsIGZpbGwgPSAiRmFjdG9yXG5sb2FkaW5nIikKYGBgCgojIyBDb25ncnVlbmNlCgpgYGB7ciBjb25ncnVlbmNlIGFkdWx0c30KY29uZ19hZHVsdHMgPC0gZmEuY29uZ3J1ZW5jZSh4ID0gbGlzdChlZmFfdXNfYWR1bHRzJGxvYWRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmYV9naF9hZHVsdHMkbG9hZGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZhX3RoX2FkdWx0cyRsb2FkaW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmFfY2hfYWR1bHRzJGxvYWRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmYV92dF9hZHVsdHMkbG9hZGluZ3MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDUpICU+JQogICMgZ2V0X3VwcGVyX3RyaV9mdW4oKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJmYWN0b3JfQSIpICU+JQogIGdhdGhlcihmYWN0b3JfQiwgY29uZywgLWZhY3Rvcl9BKSAlPiUKICBsZWZ0X2pvaW4oZmFjdG9yX25hbWVzX2FkdWx0cyAlPiUgCiAgICAgICAgICAgICAgcmVuYW1lX2FsbChsaXN0KH4gKHBhc3RlKC4sICJBIiwgc2VwID0gIl8iKSkpKSkgJT4lCiAgbGVmdF9qb2luKGZhY3Rvcl9uYW1lc19hZHVsdHMgJT4lIAogICAgICAgICAgICAgIHJlbmFtZV9hbGwobGlzdCh+IChwYXN0ZSguLCAiQiIsIHNlcCA9ICJfIikpKSkpCmBgYAoKYGBge3IgdG9wIG1hdGNoIGFkdWx0c30KY29uZ19hZHVsdHNfdG9wX21hdGNoX0EgPC0gdG9wX21hdGNoX2Z1bihjb25nX2FkdWx0cywgImNvdW50cnlfQSIpCmNvbmdfYWR1bHRzX3RvcF9tYXRjaF9CIDwtIHRvcF9tYXRjaF9mdW4oY29uZ19hZHVsdHMsICJjb3VudHJ5X0IiKQpgYGAKCmBgYHtyIGNvbmcgYWxsIHBhaXJzIGFkdWx0cywgZmlnLndpZHRoID0gNSwgZmlnLmFzcCA9IDAuN30KY29uZ19hZHVsdHMgJT4lCiAgbXV0YXRlX2F0KCN2YXJzKGNvbnRhaW5zKCJsYWJkZXNjcmlwdCIpKSwKICAgIHZhcnMoZmFjdG9yX2xhYmRlc2NyaXB0X0EpLAogICAgZnVucyhnc3ViKCIgXFwoIiwgIlxuXFwoIiwgLikpKSAlPiUKICBtdXRhdGVfYXQoI3ZhcnMoY29udGFpbnMoImxhYmRlc2NyaXB0IikpLAogICAgdmFycyhmYWN0b3JfbGFiZGVzY3JpcHRfQSksCiAgICBmdW5zKGdzdWIoIlxcLyIsICJcXC9cbiIsIC4pKSkgJT4lCiAgIyBsZWZ0X2pvaW4oY29uZ19hZHVsdHNfdG9wX21hdGNoX0EgJT4lIHJlbmFtZSh0b3BfbWF0Y2hfQSA9IHRvcF9tYXRjaCkpICU+JQogIGxlZnRfam9pbihjb25nX2FkdWx0c190b3BfbWF0Y2hfQiAlPiUgcmVuYW1lKHRvcF9tYXRjaF9CID0gdG9wX21hdGNoKSkgJT4lCiAgbXV0YXRlKGlzX3RvcF9tYXRjaCA9IGNhc2Vfd2hlbihmYWN0b3JfQSA9PSBmYWN0b3JfQiB+ICJib2xkLml0YWxpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZhY3Rvcl9BID09IHRvcF9tYXRjaF9BIH4gImJvbGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yX0IgPT0gdG9wX21hdGNoX0IgfiAiYm9sZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gInBsYWluIikpICU+JQogICMgbXV0YXRlKGNvbmcgPSBpZmVsc2UoY29uZyA9PSAxLCBOQV9yZWFsXywgY29uZykpICU+JQogIG11dGF0ZShzYW1wbGVfQSA9IHBhc3RlKHRvdXBwZXIoY291bnRyeV9BKSwgImFkdWx0cyIsIHNlcCA9ICI6XG4iKSkgJT4lCiAgbXV0YXRlKHNhbXBsZV9CID0gcGFzdGUodG91cHBlcihjb3VudHJ5X0IpLCAiYWR1bHRzIiwgc2VwID0gIjpcbiIpKSAlPiUKICBtdXRhdGVfYXQodmFycyhjb3VudHJ5X0EsIGNvdW50cnlfQiksCiAgICAgICAgICAgIGZ1bnMoZmFjdG9yKHRvdXBwZXIoLiksIGxldmVscyA9IHRvdXBwZXIobGV2ZWxzX2NvdW50cnkpKSkpICU+JQogIGdncGxvdChhZXMoeCA9IGZhY3Rvcl9sYWJkZXNjcmlwdF9BLAogICAgICAgICAgICAgeSA9IHJlb3JkZXIoZmFjdG9yX2xhYmRlc2NyaXB0X0IsIGRlc2MoZmFjdG9yX2xhYmRlc2NyaXB0X0IpKSwKICAgICAgICAgICAgIGZpbGwgPSBjb25nKSkgKwogIGZhY2V0X2dyaWQocmVvcmRlcihzYW1wbGVfQiwgYXMubnVtZXJpYyhjb3VudHJ5X0IpKSB+IAogICAgICAgICAgICAgICByZW9yZGVyKHNhbXBsZV9BLCBhcy5udW1lcmljKGNvdW50cnlfQSkpLCAKICAgICAgICAgICAgIHNjYWxlcyA9ICJmcmVlIiwgc3BhY2UgPSAiZnJlZSIpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMC4yKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGNhc2Vfd2hlbihpcy5uYShjb25nKSB+ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IGZvcm1hdChyb3VuZChjb25nLCAyKSwgbnNtYWxsID0gMikpLAogICAgICAgICAgICAgICAgZm9udGZhY2UgPSBpc190b3BfbWF0Y2gsCiAgICAgICAgICAgICAgICBjb2xvciA9IGlzX3RvcF9tYXRjaCksCiAgICAgICAgICAgIHNpemUgPSAzLCBzaG93LmxlZ2VuZCA9IEYpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiZGFya3JlZCIsICJkYXJrYmx1ZSIsICJibGFjayIpKSArCiAgc2NhbGVfZmlsbF92aXJpZGlzX2Mob3B0aW9uID0gInZpcmlkaXMiLCAKICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcndpZHRoID0gMjUsIGJhcmhlaWdodCA9IDAuNSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwKICAgICAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCwgZmFjZSA9ICJib2xkIikpICsKICBsYWJzKHggPSBOVUxMLCB5ID0gTlVMTCwgZmlsbCA9IGV4cHJlc3Npb24oaXRhbGljKHJbY10pKSkKYGBgCgojIyBCb290c3RyYXBwZWQgY29uZ3J1ZW5jZQoKYGBge3IgYm9vdHN0cmFwIGNvbmdydWVuY2UgYWR1bHRzfQppZiAoZmlsZS5leGlzdHMoIi4uL3Jlc3VsdHMvY29uZ19kZl9hZHVsdHNfb2JsaXF1ZV9kcm9wLlJEUyIpKSB7CiAgCiAgY29uZ19kZl9hZHVsdHMgPC0gcmVhZFJEUygiLi4vcmVzdWx0cy9jb25nX2RmX2FkdWx0c19vYmxpcXVlX2Ryb3AuUkRTIikKICAKfSBlbHNlIHsKICAKICBic19hZHVsdHMgPC0gbG9hZGluZ3NfYWR1bHRzICU+JQogICAgc2VsZWN0KGNhcGFjaXR5LCBmYWN0b3IsIGxvYWRpbmcpICU+JQogICAgc3ByZWFkKGZhY3RvciwgbG9hZGluZykgJT4lCiAgICBzZWxlY3QoLWNhcGFjaXR5KSAlPiUKICAgIHNqc3RhdHM6OmJvb3RzdHJhcCgxMDAwKSAKICAKICBmYWN0b3JzIDwtIGxldmVscyhmYWN0b3IobG9hZGluZ3NfYWR1bHRzJGZhY3RvcikpCiAgCiAgY29uZ19kZl9hZHVsdHMgPC0gZGF0YS5mcmFtZShOVUxMKQogIGZvciAoaSBpbiBmYWN0b3JzKSB7CiAgICBmb3IgKGogaW4gZmFjdG9ycykgewogICAgICBjbmFtZSA8LSBwYXN0ZShpLCBqLCBzZXAgPSAiLiIpCiAgICAgIHRlbXAgPC0gYnNfYWR1bHRzICU+JQogICAgICAgIG11dGF0ZShjb25nID0gbWFwX2RibChzdHJhcCwgfmxzYTo6Y29zaW5lKGFzLmRhdGEuZnJhbWUoLngpWyxpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcy5kYXRhLmZyYW1lKC54KVssal0pKSkKICAgICAgY29uZ19kZl9hZHVsdHNbMToxMDAwLCBjbmFtZV0gPC0gdGVtcCRjb25nCiAgICB9CiAgfQogIAogIGNvbmdfZGZfYWR1bHRzIDwtIGNvbmdfZGZfYWR1bHRzICU+JQogICAgZ2F0aGVyKGZhY3Rvcl9wYWlyLCBjb25nKSAlPiUKICAgIHNlcGFyYXRlKGZhY3Rvcl9wYWlyLCBpbnRvID0gYygiZmFjdG9yX0EiLCAiZmFjdG9yX0IiKSwgc2VwID0gIlxcLiIpICU+JQogICAgZ3JvdXBfYnkoZmFjdG9yX0EsIGZhY3Rvcl9CKSAlPiUKICAgIHN1bW1hcmlzZShtZWFuID0gbWVhbihjb25nKSwKICAgICAgICAgICAgICBjaV9sb3dlciA9IGNpX2xvd2VyKGNvbmcpLAogICAgICAgICAgICAgIGNpX3VwcGVyID0gY2lfdXBwZXIoY29uZykpICU+JQogICAgdW5ncm91cCgpICU+JQogICAgbGVmdF9qb2luKGZhY3Rvcl9uYW1lc19hZHVsdHMgJT4lCiAgICAgICAgICAgICAgICByZW5hbWVfYWxsKGZ1bnMocGFzdGUoLiwgIkEiLCBzZXAgPSAiXyIpKSkpICU+JQogICAgbGVmdF9qb2luKGZhY3Rvcl9uYW1lc19hZHVsdHMgJT4lCiAgICAgICAgICAgICAgICByZW5hbWVfYWxsKGZ1bnMocGFzdGUoLiwgIkIiLCBzZXAgPSAiXyIpKSkpCiAgCiAgcm0oaSwgaiwgY25hbWUsIHRlbXAsIGZhY3RvcnMpCiAgCiAgc2F2ZVJEUyhjb25nX2RmX2FkdWx0cywgZmlsZSA9ICIuLi9yZXN1bHRzL2NvbmdfZGZfYWR1bHRzX29ibGlxdWVfZHJvcC5SRFMiKQp9CmBgYAoKYGBge3IgY29uZyBtaW4gYWR1bHRzfQojIGZpbmQgbWluaW11bSB2YWx1ZSB0byBzZXQgY29uc3RhbnQgbG93ZXIgYm91bmQgb2YgcGxvdHMKbWluX2NvbmdfYWR1bHRzIDwtIGNvbmdfZGZfYWR1bHRzICU+JQogIHN1bW1hcmlzZShtaW5fY29uZyA9IG1pbihjaV9sb3dlciwgbmEucm0gPSBUKSkKYGBgCgpgYGB7ciBjb25nIGNpcyB1cyBiYXNlIGFkdWx0cywgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuOX0KIyBGSUdVUkUgMwpjb25nX3Bsb3RfZnVuKGNvbmdfZGYgPSBjb25nX2RmX2FkdWx0cywgd2hpY2hfY291bnRyeSA9ICJVUyIpICsKICB5bGltKG1pbl9jb25nX2FkdWx0cyRtaW5fY29uZywgMSkgKwogICMgeWxpbShOQSwgMSkgKwogIGxhYnMoeCA9IE5VTEwpCmdnc2F2ZSgiLi4vZmlndXJlcy9maWcwM19vYmxpcXVlLnBuZyIpCmBgYAoKYGBge3IgY29uZyBjaXMgZ2ggYmFzZSBhZHVsdHMsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjl9CiMgRklHVVJFIFMxCmNvbmdfcGxvdF9mdW4oY29uZ19kZiA9IGNvbmdfZGZfYWR1bHRzICU+JQogICAgICAgICAgICAgICAgbXV0YXRlX2F0KCN2YXJzKGNvbnRhaW5zKCJsYWJkZXNjcmlwdCIpKSwKICAgICAgICAgICAgICAgICAgdmFycyhmYWN0b3JfbGFiZGVzY3JpcHRfQSksCiAgICAgICAgICAgICAgICAgIGZ1bnMoZ3N1YigiIFxcKCIsICJcblxcKCIsIC4pKSkgJT4lCiAgICAgICAgICAgICAgICBtdXRhdGVfYXQoI3ZhcnMoY29udGFpbnMoImxhYmRlc2NyaXB0IikpLAogICAgICAgICAgICAgICAgICB2YXJzKGZhY3Rvcl9sYWJkZXNjcmlwdF9BKSwKICAgICAgICAgICAgICAgICAgZnVucyhnc3ViKCJcXC8iLCAiXFwvXG4iLCAuKSkpLCAKICAgICAgICAgICAgICB3aGljaF9jb3VudHJ5ID0gIkdoYW5hIikgKwogIHlsaW0obWluX2NvbmdfYWR1bHRzJG1pbl9jb25nLCAxKQpnZ3NhdmUoIi4uL2ZpZ3VyZXMvZmlnUzAxX29ibGlxdWUucG5nIikKYGBgCgpgYGB7ciBjb25nIGNpcyB0aCBiYXNlIGFkdWx0cywgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuOX0KIyBGSUdVUkUgUzIKY29uZ19wbG90X2Z1bihjb25nX2RmID0gY29uZ19kZl9hZHVsdHMsIAogICAgICAgICAgICAgIHdoaWNoX2NvdW50cnkgPSAiVGhhaWxhbmQiKSArCiAgeWxpbShtaW5fY29uZ19hZHVsdHMkbWluX2NvbmcsIDEpCmdnc2F2ZSgiLi4vZmlndXJlcy9maWdTMDJfb2JsaXF1ZS5wbmciKQpgYGAKCmBgYHtyIGNvbmcgY2lzIGNoIGJhc2UgYWR1bHRzLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC45fQojIEZJR1VSRSBTMwpjb25nX3Bsb3RfZnVuKGNvbmdfZGYgPSBjb25nX2RmX2FkdWx0cywgCiAgICAgICAgICAgICAgd2hpY2hfY291bnRyeSA9ICJDaGluYSIpICsKICB5bGltKG1pbl9jb25nX2FkdWx0cyRtaW5fY29uZywgMSkKZ2dzYXZlKCIuLi9maWd1cmVzL2ZpZ1MwM19vYmxpcXVlLnBuZyIpCmBgYAoKYGBge3IgY29uZyBjaXMgdnQgYmFzZSBhZHVsdHMsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjl9CiMgRklHVVJFIFM0CmNvbmdfcGxvdF9mdW4oY29uZ19kZiA9IGNvbmdfZGZfYWR1bHRzICU+JQogICAgICAgICAgICAgICAgbXV0YXRlX2F0KCN2YXJzKGNvbnRhaW5zKCJsYWJkZXNjcmlwdCIpKSwKICAgICAgICAgICAgICAgICAgdmFycyhmYWN0b3JfbGFiZGVzY3JpcHRfQSksCiAgICAgICAgICAgICAgICAgIGZ1bnMoZ3N1YigiIFxcKCIsICJcblxcKCIsIC4pKSkgJT4lCiAgICAgICAgICAgICAgICBtdXRhdGVfYXQoI3ZhcnMoY29udGFpbnMoImxhYmRlc2NyaXB0IikpLAogICAgICAgICAgICAgICAgICB2YXJzKGZhY3Rvcl9sYWJkZXNjcmlwdF9BKSwKICAgICAgICAgICAgICAgICAgZnVucyhnc3ViKCJcXC8iLCAiXFwvXG4iLCAuKSkpLCAKICAgICAgICAgICAgICB3aGljaF9jb3VudHJ5ID0gIlZhbnVhdHUiKSArCiAgeWxpbShtaW5fY29uZ19hZHVsdHMkbWluX2NvbmcsIDEpCmdnc2F2ZSgiLi4vZmlndXJlcy9maWdTMDRfb2JsaXF1ZS5wbmciKQpgYGAKCmBgYHtyIGJvZHkgbWluZCBjb25nIGFkdWx0c30KIyAiSW4gZWFjaCBzYW1wbGUsIHRoZXJlIHdhcyBhIGZhY3RvciB0aGF0IHdhcyBzaW1pbGFyIHRvIFVTIGFkdWx0c+KAmSDigJxib2R54oCdIGZhY3Rvci4uLgpjb25nX2RmX2FkdWx0cyAlPiUgCiAgZmlsdGVyKGdyZXBsKCJib2R5IiwgdG9sb3dlcihmYWN0b3JfZGVzY3JpcHRfQSkpLCAKICAgICAgICAgZ3JlcGwoImJvZHkiLCB0b2xvd2VyKGZhY3Rvcl9kZXNjcmlwdF9CKSksCiAgICAgICAgIGNvdW50cnlfQSAhPSAiVVMiLCBjb3VudHJ5X0IgPT0gIlVTIikKCiMgIi4uLmFuZCBub3Qgc2ltaWxhciB0byB0aGUgVVMgYWR1bHQg4oCcbWluZOKAnSBmYWN0b3IsIC4uLgpjb25nX2RmX2FkdWx0cyAlPiUgCiAgZmlsdGVyKGdyZXBsKCJib2R5IiwgdG9sb3dlcihmYWN0b3JfZGVzY3JpcHRfQSkpLCAKICAgICAgICAgZ3JlcGwoIm1pbmQiLCB0b2xvd2VyKGZhY3Rvcl9kZXNjcmlwdF9CKSksCiAgICAgICAgIGNvdW50cnlfQSAhPSAiVVMiLCBjb3VudHJ5X0IgPT0gIlVTIikKCiMgIi4uLiBhbmQgYSBmYWN0b3IgdGhhdCB3YXMgbXVjaCBtb3JlIHNpbWlsYXIgdG8gVVMgYWR1bHRz4oCZIOKAnG1pbmTigJ0gZmFjdG9yLi4uCmNvbmdfZGZfYWR1bHRzICU+JSAKICBmaWx0ZXIoZ3JlcGwoIm1pbmQiLCB0b2xvd2VyKGZhY3Rvcl9kZXNjcmlwdF9BKSksIAogICAgICAgICBncmVwbCgibWluZCIsIHRvbG93ZXIoZmFjdG9yX2Rlc2NyaXB0X0IpKSwKICAgICAgICAgY291bnRyeV9BICE9ICJVUyIsIGNvdW50cnlfQiA9PSAiVVMiKQoKIyAiLi4udGhhbiB0aGUgVVMgYWR1bHQg4oCcYm9keeKAnSBmYWN0b3IuIgpjb25nX2RmX2FkdWx0cyAlPiUgCiAgZmlsdGVyKGdyZXBsKCJtaW5kIiwgdG9sb3dlcihmYWN0b3JfZGVzY3JpcHRfQSkpLCAKICAgICAgICAgZ3JlcGwoImJvZHkiLCB0b2xvd2VyKGZhY3Rvcl9kZXNjcmlwdF9CKSksCiAgICAgICAgIGNvdW50cnlfQSAhPSAiVVMiLCBjb3VudHJ5X0IgPT0gIlVTIikKYGBgCmBgYHtyIGhlYXJ0IGNvbmcgYWR1bHRzfQpjb25nX2RmX2FkdWx0cyAlPiUgCiAgZmlsdGVyKGdyZXBsKCJoZWFydCIsIHRvbG93ZXIoZmFjdG9yX2Rlc2NyaXB0X0EpKSwgCiAgICAgICAgIGdyZXBsKCJoZWFydCIsIHRvbG93ZXIoZmFjdG9yX2Rlc2NyaXB0X0IpKSwKICAgICAgICAgY291bnRyeV9BICVpbiUgYygiVGhhaWxhbmQiLCAiQ2hpbmEiKSwgY291bnRyeV9CID09ICJVUyIpCgpjb25nX2RmX2FkdWx0cyAlPiUgCiAgZmlsdGVyKGdyZXBsKCJib2R5IiwgdG9sb3dlcihmYWN0b3JfZGVzY3JpcHRfQSkpIHwgCiAgICAgICAgICAgZ3JlcGwoIm1pbmQiLCB0b2xvd2VyKGZhY3Rvcl9kZXNjcmlwdF9BKSksCiAgICAgICAgIGdyZXBsKCJoZWFydCIsIHRvbG93ZXIoZmFjdG9yX2Rlc2NyaXB0X0IpKSwKICAgICAgICAgY291bnRyeV9BICVpbiUgYygiVGhhaWxhbmQiLCAiQ2hpbmEiKSwgY291bnRyeV9CID09ICJVUyIpCmBgYAoKCiMgQ2hpbGRyZW4KCiMjIFNhbXBsZXMKCmBgYHtyIHNhbXBsZXMgY2hpbGRyZW59CmJpbmRfcm93cyhkX3VzX2NoaWxkcmVuLCBkX2doX2NoaWxkcmVuLCBkX3RoX2NoaWxkcmVuLCBkX2NoX2NoaWxkcmVuLCBkX3Z0X2NoaWxkcmVuKSAlPiUKICBtdXRhdGUoY291bnRyeSA9IGZhY3Rvcihjb3VudHJ5LCBsZXZlbHMgPSBsZXZlbHNfY291bnRyeSkpICU+JQogIGRpc3RpbmN0KGNvdW50cnksIHN1YmpfaWQpICU+JQogIGNvdW50KGNvdW50cnkpICU+JSAKICBqYW5pdG9yOjphZG9ybl90b3RhbHMoKQpgYGAKCiMjIFNjYWxlIHVzZQoKYGBge3Igc2NhbGUgdXNlIG1lYW4gb3ZlcmFsbCBjaGlsZHJlbn0KYmluZF9yb3dzKGRfdXNfY2hpbGRyZW4sIGRfZ2hfY2hpbGRyZW4sIGRfdGhfY2hpbGRyZW4sIGRfY2hfY2hpbGRyZW4sIGRfdnRfY2hpbGRyZW4pICU+JQogIG11dGF0ZShjb3VudHJ5ID0gZmFjdG9yKGNvdW50cnksIGxldmVscyA9IGxldmVsc19jb3VudHJ5KSwKICAgICAgICAgcmVzcG9uc2VfY2F0ID0gcmVjb2RlX2ZhY3RvcihyZXNwb25zZV9jYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIiA9ICJubyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtpbmQgb2YiID0gImtpbmQgb2YiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5ZXMiID0gInllcyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5taXNzaW5nID0gIm1pc3NpbmcgZGF0YSIpKSAlPiUKICBjb3VudChjb3VudHJ5LCByZXNwb25zZV9jYXQpICU+JQogIGNvbXBsZXRlKHJlc3BvbnNlX2NhdCwgbmVzdGluZyhjb3VudHJ5KSwgZmlsbCA9IGxpc3QobiA9IDApKSAlPiUKICBncm91cF9ieShjb3VudHJ5KSAlPiUKICBtdXRhdGUocHJvcCA9IG4vc3VtKG4sIG5hLnJtID0gVCkpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBzZWxlY3QoLW4pICU+JQogIHNwcmVhZChyZXNwb25zZV9jYXQsIHByb3ApICU+JQogIGphbml0b3I6OmFkb3JuX3BjdF9mb3JtYXR0aW5nKGRpZ2l0cyA9IDIpCmBgYAoKIyMgRmFjdG9yIHJldGVudGlvbjogcGFyYWxsZWwgYW5hbHlzaXMKCmBgYHtyIHBhcmFsbGVsIGRpc3QgY2hpbGRyZW4sIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAwLjV9CiMgSGVyZSdzIHRoZSBkaXN0cmlidXRpb24gb3ZlciBvdXRjb21lcyBvZiBwYXJhbGxlbCBhbmFseXNpcyB3aXRoIDEwMCBpdGVyYXRpb25zLiBXZSdsbCBjaG9vc2UgdGhlIG1lZGlhbiBudW1iZXIgb2YgZmFjdG9ycy4KCmlmIChmaWxlLmV4aXN0cygiLi4vcmVzdWx0cy9wYV9vdXRjb21lc19kaXN0X2NoaWxkcmVuX2Ryb3AuUkRTIikpIHsKICAKICBwYV9vdXRjb21lc19kaXN0X2NoaWxkcmVuIDwtIHJlYWRSRFMoIi4uL3Jlc3VsdHMvcGFfb3V0Y29tZXNfZGlzdF9jaGlsZHJlbl9kcm9wLlJEUyIpCiAgCn0gZWxzZSB7CiAgCiAgcGFfb3V0Y29tZXNfZGlzdF9jaGlsZHJlbiA8LSBkYXRhLmZyYW1lKHVzID0gTlVMTCwgZ2ggPSBOVUxMLCB0aCA9IE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gTlVMTCwgdnQgPSBOVUxMKQogIAogIHNldC5zZWVkKDU0MzIxKQogIG5fY29yZXMgPC0gcGFyYWxsZWw6OmRldGVjdENvcmVzKCkKICBvcHRpb25zKG1jLmNvcmVzID0gbl9jb3JlcykKICAKICBmb3IgKGkgaW4gMToxMDApIHsKICAgIHBhX291dGNvbWVzX2Rpc3RfY2hpbGRyZW5baSwgInVzIl0gPC0gZmEucGFyYWxsZWwoZF91c19jaGlsZHJlbl93LCBwbG90ID0gRikkbmZhY3QKICAgIHBhX291dGNvbWVzX2Rpc3RfY2hpbGRyZW5baSwgImdoIl0gPC0gZmEucGFyYWxsZWwoZF9naF9jaGlsZHJlbl93LCBwbG90ID0gRikkbmZhY3QgICAgIAogICAgcGFfb3V0Y29tZXNfZGlzdF9jaGlsZHJlbltpLCAidGgiXSA8LSBmYS5wYXJhbGxlbChkX3RoX2NoaWxkcmVuX3csIHBsb3QgPSBGKSRuZmFjdAogICAgcGFfb3V0Y29tZXNfZGlzdF9jaGlsZHJlbltpLCAiY2giXSA8LSBmYS5wYXJhbGxlbChkX2NoX2NoaWxkcmVuX3csIHBsb3QgPSBGKSRuZmFjdAogICAgcGFfb3V0Y29tZXNfZGlzdF9jaGlsZHJlbltpLCAidnQiXSA8LSBmYS5wYXJhbGxlbChkX3Z0X2NoaWxkcmVuX3csIHBsb3QgPSBGKSRuZmFjdAogIH0KICAKICBzYXZlUkRTKHBhX291dGNvbWVzX2Rpc3RfY2hpbGRyZW4sIGZpbGUgPSAiLi4vcmVzdWx0cy9wYV9vdXRjb21lc19kaXN0X2NoaWxkcmVuX2Ryb3AuUkRTIikKfQoKIyBwbG90CnBhX291dGNvbWVzX2Rpc3RfY2hpbGRyZW4gJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJpdGVyIikgJT4lCiAgZ2F0aGVyKGNvdW50cnksIG5mYWN0LCAtaXRlcikgJT4lCiAgbXV0YXRlKGNvdW50cnkgPSBmYWN0b3IoY291bnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJ1cyIsICJnaCIsICJ0aCIsICJjaCIsICJ2dCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGxldmVsc19jb3VudHJ5KSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbmZhY3QpKSArCiAgZmFjZXRfZ3JpZCh+IGNvdW50cnkpICsKICBnZW9tX2JhcihzdGF0ID0gImNvdW50IikgKwogIHNjYWxlX3hfY29udGludW91cyhsaW1pdHMgPSBjKDEsIG1heChwYV9vdXRjb21lc19kaXN0X2NoaWxkcmVuKSArIDEpLAogICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBzZXEoMCwgMTAwLCAxKSkgKwogIGxhYnMoeCA9ICJOdW1iZXIgb2YgZmFjdG9ycyBzdWdnZXN0ZWQgYnkgZmEucGFyYWxsZWwoKSIpCmBgYAoKIyMgRXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzCgpgYGB7ciBlZmEgY2hpbGRyZW59CnNldC5zZWVkKDU0MzIxKQoKIyBkbyBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXM6IGNoaWxkcmVuCmVmYV91c19jaGlsZHJlbiA8LSBmYV9mdW4oZF91c19jaGlsZHJlbl93LCAKICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbWVkaWFuKHBhX291dGNvbWVzX2Rpc3RfY2hpbGRyZW4kdXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNob3Nlbl9uLml0ZXIgPSAxMDAwLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNob3Nlbl9yb3QgPSAib2JsaW1pbiIpCmNvbG5hbWVzKGVmYV91c19jaGlsZHJlbiRsb2FkaW5ncykgPC0gcGFzdGUwKCJ1c0NISUxEUkVOXyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xuYW1lcyhlZmFfdXNfY2hpbGRyZW4kbG9hZGluZ3MpKQoKZWZhX2doX2NoaWxkcmVuIDwtIGZhX2Z1bihkX2doX2NoaWxkcmVuX3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG1lZGlhbihwYV9vdXRjb21lc19kaXN0X2NoaWxkcmVuJGdoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9zZW5fbi5pdGVyID0gMTAwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9zZW5fcm90ID0gIm9ibGltaW4iKQpjb2xuYW1lcyhlZmFfZ2hfY2hpbGRyZW4kbG9hZGluZ3MpIDwtIHBhc3RlMCgiZ2hDSElMRFJFTl8iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbmFtZXMoZWZhX2doX2NoaWxkcmVuJGxvYWRpbmdzKSkKCmVmYV90aF9jaGlsZHJlbiA8LSBmYV9mdW4oZF90aF9jaGlsZHJlbl93LCAKICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbWVkaWFuKHBhX291dGNvbWVzX2Rpc3RfY2hpbGRyZW4kdGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNob3Nlbl9uLml0ZXIgPSAxMDAwLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNob3Nlbl9yb3QgPSAib2JsaW1pbiIpCmNvbG5hbWVzKGVmYV90aF9jaGlsZHJlbiRsb2FkaW5ncykgPC0gcGFzdGUwKCJ0aENISUxEUkVOXyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xuYW1lcyhlZmFfdGhfY2hpbGRyZW4kbG9hZGluZ3MpKQoKZWZhX2NoX2NoaWxkcmVuIDwtIGZhX2Z1bihkX2NoX2NoaWxkcmVuX3csIAogICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBtZWRpYW4ocGFfb3V0Y29tZXNfZGlzdF9jaGlsZHJlbiRjaCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hvc2VuX24uaXRlciA9IDEwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hvc2VuX3JvdCA9ICJvYmxpbWluIikKY29sbmFtZXMoZWZhX2NoX2NoaWxkcmVuJGxvYWRpbmdzKSA8LSBwYXN0ZTAoImNoQ0hJTERSRU5fIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG5hbWVzKGVmYV9jaF9jaGlsZHJlbiRsb2FkaW5ncykpCgplZmFfdnRfY2hpbGRyZW4gPC0gZmFfZnVuKGRfdnRfY2hpbGRyZW5fdywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG1lZGlhbihwYV9vdXRjb21lc19kaXN0X2NoaWxkcmVuJHZ0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9zZW5fbi5pdGVyID0gMTAwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9zZW5fcm90ID0gIm9ibGltaW4iKQpjb2xuYW1lcyhlZmFfdnRfY2hpbGRyZW4kbG9hZGluZ3MpIDwtIHBhc3RlMCgidnRDSElMRFJFTl8iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbmFtZXMoZWZhX3Z0X2NoaWxkcmVuJGxvYWRpbmdzKSkKYGBgCgpgYGB7ciBmYWN0b3IgbmFtZXMgY2hpbGRyZW59CmZhY3Rvcl9uYW1lc19jaGlsZHJlbiA8LSBkYXRhLmZyYW1lKGZhY3RvciA9IGMoY29sbmFtZXMoZWZhX3VzX2NoaWxkcmVuJGxvYWRpbmdzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xuYW1lcyhlZmFfZ2hfY2hpbGRyZW4kbG9hZGluZ3MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG5hbWVzKGVmYV90aF9jaGlsZHJlbiRsb2FkaW5ncyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbmFtZXMoZWZhX2NoX2NoaWxkcmVuJGxvYWRpbmdzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xuYW1lcyhlZmFfdnRfY2hpbGRyZW4kbG9hZGluZ3MpKSkgJT4lCiAgbXV0YXRlKGFnZV9ncm91cCA9ICJjaGlsZHJlbiIpICU+JQogIG11dGF0ZShjb3VudHJ5ID0gY2FzZV93aGVuKGdyZXBsKCJedXMiLCBmYWN0b3IpIH4gIlVTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVwbCgiXmdoIiwgZmFjdG9yKSB+ICJHaGFuYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcGwoIl50aCIsIGZhY3RvcikgfiAiVGhhaWxhbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZXBsKCJeY2giLCBmYWN0b3IpIH4gIkNoaW5hIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVwbCgiXnZ0IiwgZmFjdG9yKSB+ICJWYW51YXR1IiksCiAgICAgICAgIGNvdW50cnkgPSBmYWN0b3IoY291bnRyeSwgbGV2ZWxzX2NvdW50cnkpKSAlPiUKICBtdXRhdGUoZmFjdG9yX25hbWUgPSBnc3ViKCJedXMiLCAiVVMgIiwgZmFjdG9yKSwKICAgICAgICAgZmFjdG9yX25hbWUgPSBnc3ViKCJeZ2giLCAiR2guICIsIGZhY3Rvcl9uYW1lKSwKICAgICAgICAgZmFjdG9yX25hbWUgPSBnc3ViKCJedGgiLCAiVGguICIsIGZhY3Rvcl9uYW1lKSwKICAgICAgICAgZmFjdG9yX25hbWUgPSBnc3ViKCJeY2giLCAiQ2guICIsIGZhY3Rvcl9uYW1lKSwKICAgICAgICAgZmFjdG9yX25hbWUgPSBnc3ViKCJednQiLCAiVmEuICIsIGZhY3Rvcl9uYW1lKSwKICAgICAgICAgZmFjdG9yX25hbWUgPSBnc3ViKCJDSElMRFJFTiIsICJjaGlsZHJlbiIsIGZhY3Rvcl9uYW1lKSwKICAgICAgICAgZmFjdG9yX25hbWUgPSBnc3ViKCJfRiIsICIgRmFjdG9yICIsIGZhY3Rvcl9uYW1lKSkgJT4lCiAgbXV0YXRlKGZhY3Rvcl9kZXNjcmlwdCA9IHJlY29kZShmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c0NISUxEUkVOX0YxID0gIkJvZHktbGlrZSwgbmVnYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNDSElMRFJFTl9GMyA9ICJIZWFydC1saWtlLCBwb3NpdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c0NISUxEUkVOX0YyID0gIk1pbmQtbGlrZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaENISUxEUkVOX0YxID0gIkJvZHktbGlrZSwgbmVnYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2hDSElMRFJFTl9GMiA9ICJNaW5kLWxpa2UsIHBvc2l0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdoQ0hJTERSRU5fRjMgPSAiUHJheSwgYWRkLCBldGMuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoQ0hJTERSRU5fRjEgPSAiQm9keS1saWtlLCBwb3NpdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aENISUxEUkVOX0YyID0gIkhlYXJ0LWxpa2UsIG5lZ2F0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoQ0hJTERSRU5fRjMgPSAiTWluZC1saWtlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoQ0hJTERSRU5fRjQgPSAiQWRkLCBwcmF5LCBldGMuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoQ0hJTERSRU5fRjEgPSAiSGVhcnQtbGlrZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaENISUxEUkVOX0YyID0gIkJvZHktbGlrZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaENISUxEUkVOX0YzID0gIk1pbmQtbGlrZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaENISUxEUkVOX0Y0ID0gIlByYXksIGV0Yy4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnRDSElMRFJFTl9GMSA9ICJCb2R5LWxpa2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnRDSElMRFJFTl9GMiA9ICJNaW5kLWxpa2UsIHBvc2l0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ0Q0hJTERSRU5fRjMgPSAiSGVhcnQtbGlrZSwgbmVnYXRpdmUiKSwKICAgICAgICAgZmFjdG9yX2xhYmRlc2NyaXB0ID0gcGFzdGUoZ3N1YigiLipfRiIsICJGIiwgZmFjdG9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yX2Rlc2NyaXB0LCBzZXAgPSAiOiAiKSkKYGBgCgojIyBGYWN0b3IgbG9hZGluZ3MKCmBgYHtyIG9yZGVyIGNoaWxkcmVufQojIG9yZGVyIGNhcGFjaXRpZXM6IGNoaWxkcmVuCm9yZGVyX3VzX2NoaWxkcmVuIDwtIGZhLnNvcnQoZWZhX3VzX2NoaWxkcmVuKSRsb2FkaW5nc1tdICU+JSByb3duYW1lcygpCm9yZGVyX2doX2NoaWxkcmVuIDwtIGZhLnNvcnQoZWZhX2doX2NoaWxkcmVuKSRsb2FkaW5nc1tdICU+JSByb3duYW1lcygpCm9yZGVyX3RoX2NoaWxkcmVuIDwtIGZhLnNvcnQoZWZhX3RoX2NoaWxkcmVuKSRsb2FkaW5nc1tdICU+JSByb3duYW1lcygpCm9yZGVyX2NoX2NoaWxkcmVuIDwtIGZhLnNvcnQoZWZhX2NoX2NoaWxkcmVuKSRsb2FkaW5nc1tdICU+JSByb3duYW1lcygpCm9yZGVyX3Z0X2NoaWxkcmVuIDwtIGZhLnNvcnQoZWZhX3Z0X2NoaWxkcmVuKSRsb2FkaW5nc1tdICU+JSByb3duYW1lcygpCmBgYAoKYGBge3IgbG9hZGluZ3MgY2hpbGRyZW59CiMgY29tcGlsZSBsb2FkaW5nczogY2hpbGRyZW4KbG9hZGluZ3NfY2hpbGRyZW4gPC0gYmluZF9yb3dzKAogIGxvYWRpbmdzX2Z1bihlZmFfdXNfY2hpbGRyZW4pICU+JSBtdXRhdGUoY291bnRyeSA9ICJVUyIpLAogIGxvYWRpbmdzX2Z1bihlZmFfZ2hfY2hpbGRyZW4pICU+JSBtdXRhdGUoY291bnRyeSA9ICJHaGFuYSIpLAogIGxvYWRpbmdzX2Z1bihlZmFfdGhfY2hpbGRyZW4pICU+JSBtdXRhdGUoY291bnRyeSA9ICJUaGFpbGFuZCIpLAogIGxvYWRpbmdzX2Z1bihlZmFfY2hfY2hpbGRyZW4pICU+JSBtdXRhdGUoY291bnRyeSA9ICJDaGluYSIpLAogIGxvYWRpbmdzX2Z1bihlZmFfdnRfY2hpbGRyZW4pICU+JSBtdXRhdGUoY291bnRyeSA9ICJWYW51YXR1IikpICU+JQogIG11dGF0ZShjb3VudHJ5ID0gZmFjdG9yKGNvdW50cnksIGxldmVscyA9IGxldmVsc19jb3VudHJ5KSwKICAgICAgICAgY2FwYWNpdHlfb3JkX3VzID0gZmFjdG9yKGNhcGFjaXR5LCBsZXZlbHMgPSBvcmRlcl91c19jaGlsZHJlbiksCiAgICAgICAgIGNhcGFjaXR5X29yZF9naCA9IGZhY3RvcihjYXBhY2l0eSwgbGV2ZWxzID0gb3JkZXJfZ2hfY2hpbGRyZW4pLAogICAgICAgICBjYXBhY2l0eV9vcmRfdGggPSBmYWN0b3IoY2FwYWNpdHksIGxldmVscyA9IG9yZGVyX3RoX2NoaWxkcmVuKSwKICAgICAgICAgY2FwYWNpdHlfb3JkX2NoID0gZmFjdG9yKGNhcGFjaXR5LCBsZXZlbHMgPSBvcmRlcl9jaF9jaGlsZHJlbiksCiAgICAgICAgIGNhcGFjaXR5X29yZF92dCA9IGZhY3RvcihjYXBhY2l0eSwgbGV2ZWxzID0gb3JkZXJfdnRfY2hpbGRyZW4pKSAlPiUKICBhcnJhbmdlKGNvdW50cnksIGZhY3RvciwgZGVzYyhhYnMobG9hZGluZykpLCBjYXBhY2l0eSkgJT4lCiAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICBsZWZ0X2pvaW4oZmFjdG9yX25hbWVzX2NoaWxkcmVuKQpgYGAKCmBgYHtyIGhlYXRtYXAgY2hpbGRyZW4sIGZpZy53aWR0aCA9IDUsIGZpZy5hc3AgPSAwLjd9CiMgbWFrZSBoZWF0bWFwIGZpZ3VyZTogY2hpbGRyZW4KbG9hZGluZ3NfY2hpbGRyZW4gJT4lCiAgbXV0YXRlKGZhY3Rvcl9udW0gPSBhcy5udW1lcmljKGdzdWIoIi4qRiIsICIiLCBmYWN0b3IpKSkgJT4lCiAgbXV0YXRlKHNhbXBsZSA9IHBhc3RlKGNvdW50cnksICJjaGlsZHJlbiIsIHNlcCA9ICJcbiIpKSAlPiUKICBsZWZ0X2pvaW4oZmFjdG9yX25hbWVzX2NoaWxkcmVuKSAlPiUKICBtdXRhdGUoY291bnRyeSA9IGZhY3Rvcihjb3VudHJ5LCBsZXZlbHMgPSBsZXZlbHNfY291bnRyeSkpICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIoZmFjdG9yX2xhYmRlc2NyaXB0LCBmYWN0b3JfbnVtKSwgCiAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhjYXBhY2l0eV9vcmRfdXMpKSwKICAgICAgICAgICAgICMgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2MoY2FwYWNpdHlfb3JkX2VjKSksIAogICAgICAgICAgICAgIyB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhjYXBhY2l0eV9vcmRfZ2gpKSwKICAgICAgICAgICAgICMgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2MoY2FwYWNpdHlfb3JkX3RoKSksCiAgICAgICAgICAgICAjIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKGNhcGFjaXR5X29yZF9jaCkpLAogICAgICAgICAgICAgIyB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhjYXBhY2l0eV9vcmRfdnQpKSwKICAgICAgICAgICAgIGZpbGwgPSBsb2FkaW5nKSkgKwogIGZhY2V0X2dyaWQofiByZW9yZGVyKHNhbXBsZSwgYXMubnVtZXJpYyhjb3VudHJ5KSksIHNjYWxlcyA9ICJmcmVlIiwgc3BhY2UgPSAiZnJlZSIpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMC4yKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gMykgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAyMCwgYmFyd2lkdGggPSAwLjUpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSksCiAgICAgICAgcGFuZWwuc3BhY2luZy54ID0gdW5pdCgwLjgsICJsaW5lcyIpLAogICAgICAgIHN0cmlwLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTAsIGZhY2UgPSAiYm9sZCIpKSArCiAgbGFicyh4ID0gTlVMTCwgeSA9ICJDYXBhY2l0eSIsIGZpbGwgPSAiRmFjdG9yXG5sb2FkaW5nIikKYGBgCgojIyBDb25ncnVlbmNlCgpTZWUgW0FsbCBzYW1wbGVzXSwgYmVsb3cuCgojIyBCb290c3RyYXBwZWQgY29uZ3J1ZW5jZQoKYGBge3IgYm9vdHN0cmFwIGNvbmdydWVuY2UgY2hpbGRyZW59CmlmIChmaWxlLmV4aXN0cygiLi4vcmVzdWx0cy9jb25nX2RmX2NoaWxkcmVuX29ibGlxdWVfZHJvcC5SRFMiKSkgewogIAogIGNvbmdfZGZfY2hpbGRyZW4gPC0gcmVhZFJEUygiLi4vcmVzdWx0cy9jb25nX2RmX2NoaWxkcmVuX29ibGlxdWVfZHJvcC5SRFMiKQogIAp9IGVsc2UgewogIAogIGJzX2NoaWxkcmVuIDwtIGxvYWRpbmdzX2NoaWxkcmVuICU+JQogICAgc2VsZWN0KGNhcGFjaXR5LCBmYWN0b3IsIGxvYWRpbmcpICU+JQogICAgc3ByZWFkKGZhY3RvciwgbG9hZGluZykgJT4lCiAgICBmdWxsX2pvaW4obG9hZGluZ3NfYWR1bHRzICU+JQogICAgICAgICAgICAgICAgc2VsZWN0KGNhcGFjaXR5LCBmYWN0b3IsIGxvYWRpbmcpICU+JQogICAgICAgICAgICAgICAgc3ByZWFkKGZhY3RvciwgbG9hZGluZykpICU+JQogICAgc2VsZWN0KC1jYXBhY2l0eSkgJT4lCiAgICBzanN0YXRzOjpib290c3RyYXAoMTAwMCkgCiAgCiAgY29uZ19kZl9jaGlsZHJlbiA8LSBkYXRhLmZyYW1lKE5VTEwpCiAgCiAgZm9yIChrIGluIGxldmVsc19jb3VudHJ5KSB7CiAgICAKICAgIGZhY3RvcnNfY2hpbGRyZW4gPC0gbGV2ZWxzKGZhY3Rvcihsb2FkaW5nc19jaGlsZHJlbiRmYWN0b3JbCiAgICAgIGxvYWRpbmdzX2NoaWxkcmVuJGNvdW50cnkgPT0ga10pKQogICAgZmFjdG9yc19hZHVsdHMgPC0gbGV2ZWxzKGZhY3Rvcihsb2FkaW5nc19hZHVsdHMkZmFjdG9yWwogICAgICBsb2FkaW5nc19hZHVsdHMkY291bnRyeSA9PSBrXSkpCiAgICAKICAgIGZvciAoaSBpbiBmYWN0b3JzX2NoaWxkcmVuKSB7CiAgICAgIGZvciAoaiBpbiBmYWN0b3JzX2FkdWx0cykgewogICAgICAgIGNuYW1lIDwtIHBhc3RlKGksIGosIHNlcCA9ICIuIikKICAgICAgICB0ZW1wIDwtIGJzX2NoaWxkcmVuICU+JQogICAgICAgICAgbXV0YXRlKGNvbmcgPSBtYXBfZGJsKHN0cmFwLCB+bHNhOjpjb3NpbmUoYXMuZGF0YS5mcmFtZSgueClbLGldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMuZGF0YS5mcmFtZSgueClbLGpdKSkpCiAgICAgICAgY29uZ19kZl9jaGlsZHJlblsxOjEwMDAsIGNuYW1lXSA8LSB0ZW1wJGNvbmcKICAgICAgfQogICAgfQogICAgCiAgICBybShpLCBqLCBjbmFtZSwgdGVtcCwgZmFjdG9yc19jaGlsZHJlbiwgZmFjdG9yc19hZHVsdHMpCiAgICAKICB9CiAgCiAgcm0oaykKICAKICBjb25nX2RmX2NoaWxkcmVuIDwtIGNvbmdfZGZfY2hpbGRyZW4gJT4lCiAgICBnYXRoZXIoZmFjdG9yX3BhaXIsIGNvbmcpICU+JQogICAgc2VwYXJhdGUoZmFjdG9yX3BhaXIsIGludG8gPSBjKCJmYWN0b3JfQSIsICJmYWN0b3JfQiIpLCBzZXAgPSAiXFwuIikgJT4lCiAgICBncm91cF9ieShmYWN0b3JfQSwgZmFjdG9yX0IpICU+JQogICAgc3VtbWFyaXNlKG1lYW4gPSBtZWFuKGNvbmcpLAogICAgICAgICAgICAgIGNpX2xvd2VyID0gY2lfbG93ZXIoY29uZyksCiAgICAgICAgICAgICAgY2lfdXBwZXIgPSBjaV91cHBlcihjb25nKSkgJT4lCiAgICB1bmdyb3VwKCkgJT4lCiAgICBmdWxsX2pvaW4oZmFjdG9yX25hbWVzX2NoaWxkcmVuICU+JQogICAgICAgICAgICAgICAgcmVuYW1lX2FsbChmdW5zKHBhc3RlKC4sICJBIiwgc2VwID0gIl8iKSkpKSAlPiUKICAgIGZ1bGxfam9pbihmYWN0b3JfbmFtZXNfYWR1bHRzICU+JQogICAgICAgICAgICAgICAgcmVuYW1lX2FsbChmdW5zKHBhc3RlKC4sICJCIiwgc2VwID0gIl8iKSkpKSAlPiUKICAgIG11dGF0ZShmYWN0b3JfYmhtX0EgPSBjYXNlX3doZW4oCiAgICAgIGdyZXBsKCJib2R5IiwgdG9sb3dlcihmYWN0b3JfZGVzY3JpcHRfQSkpIH4gIkJvZHktbGlrZVxuY2hpbGQgZmFjdG9yIiwKICAgICAgZ3JlcGwoIm1pbmQiLCB0b2xvd2VyKGZhY3Rvcl9kZXNjcmlwdF9BKSkgfiAiTWluZC1saWtlXG5jaGlsZCBmYWN0b3IiLAogICAgICBncmVwbCgiaGVhcnQiLCB0b2xvd2VyKGZhY3Rvcl9kZXNjcmlwdF9BKSkgfiAiSGVhcnQtbGlrZVxuY2hpbGQgZmFjdG9yIiwKICAgICAgVFJVRSB+ICJPdGhlciIpKSAlPiUKICAgIG11dGF0ZShmYWN0b3JfYmhtX0IgPSBjYXNlX3doZW4oCiAgICAgIGdyZXBsKCJib2R5IiwgdG9sb3dlcihmYWN0b3JfZGVzY3JpcHRfQikpIH4gIkxvY2FsIGFkdWx0czpcbkJvZHktbGlrZSBmYWN0b3IiLAogICAgICBncmVwbCgibWluZCIsIHRvbG93ZXIoZmFjdG9yX2Rlc2NyaXB0X0IpKSB+ICJMb2NhbCBhZHVsdHM6XG5NaW5kLWxpa2UgZmFjdG9yIiwKICAgICAgZ3JlcGwoImhlYXJ0IiwgdG9sb3dlcihmYWN0b3JfZGVzY3JpcHRfQikpIH4gIkxvY2FsIGFkdWx0czpcbkhlYXJ0LWxpa2UgZmFjdG9yIiwKICAgICAgVFJVRSB+ICJMb2NhbCBhZHVsdHM6XG5PdGhlciBmYWN0b3IiKSkKICAKICBzYXZlUkRTKGNvbmdfZGZfY2hpbGRyZW4sIGZpbGUgPSAiLi4vcmVzdWx0cy9jb25nX2RmX2NoaWxkcmVuX29ibGlxdWVfZHJvcC5SRFMiKQp9CmBgYAoKYGBge3IgY29uZyBtaW4gY2hpbGRyZW59CiMgZmluZCBtaW5pbXVtIHZhbHVlIHRvIHNldCBjb25zdGFudCBsb3dlciBib3VuZCBvZiBwbG90cwptaW5fY29uZ19jaGlsZHJlbiA8LSBjb25nX2RmX2NoaWxkcmVuICU+JQogIHN1bW1hcmlzZShtaW5fY29uZyA9IG1pbihjaV9sb3dlciwgbmEucm0gPSBUKSkKYGBgCgpgYGB7ciBjb25nIGNpcyBjaGlsZHJlbiwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDEuNH0KIyBGSUdVUkUgNAojIGZpZy5hc3AgY2hvc2VuIHRvIGtlZXAgYWJzb2x1dGUgaGVpZ2h0IG9mIHktYXhpcyByZWxhdGl2ZWx5IHNpbWlsYXIgYWNyb3NzIGFkdWx0cyBhbmQgY2hpbGRyZW4KY29uZ19kZl9jaGlsZHJlbiAlPiUKICBtdXRhdGUocmVnaW9uX0EgPSBjYXNlX3doZW4oCiAgICBjb3VudHJ5X0EgPT0gIlVTIiB+ICJTRiBCYXkgQXJlYSIsCiAgICBjb3VudHJ5X0EgPT0gIkdoYW5hIiB+ICJDYXBlIENvYXN0IiwKICAgIGNvdW50cnlfQSA9PSAiVGhhaWxhbmQiIH4gIkNoaWFuZyBNYWkiLAogICAgY291bnRyeV9BID09ICJDaGluYSIgfiAiU2hhbmdoYWkiLAogICAgY291bnRyeV9BID09ICJWYW51YXR1IiB+ICJQViAmIE1hbGVrdWxhIikpICU+JQogIG11dGF0ZShzYW1wbGVfQSA9IHBhc3RlKGNvdW50cnlfQSwgYWdlX2dyb3VwX0EsIHNlcCA9ICJcbiIpKSAlPiUKICBtdXRhdGUobGFiX0EgPSBwYXN0ZShwYXN0ZTAocmVnaW9uX0EsICIsIiksIAogICAgICAgICAgICAgICAgICAgICAgIHBhc3RlMCh0b3VwcGVyKGNvdW50cnlfQSksICI6IiksIAogICAgICAgICAgICAgICAgICAgICAgIGFnZV9ncm91cF9BLCBzZXAgPSAiXG4iKSkgJT4lCiAgbXV0YXRlKGJobV9BID0gY2FzZV93aGVuKAogICAgZ3JlcGwoImJvZHkiLCB0b2xvd2VyKGZhY3Rvcl9sYWJkZXNjcmlwdF9BKSkgfiAiYm9keSIsCiAgICBncmVwbCgibWluZCIsIHRvbG93ZXIoZmFjdG9yX2xhYmRlc2NyaXB0X0EpKSB+ICJtaW5kIiwKICAgIGdyZXBsKCJoZWFydCIsIHRvbG93ZXIoZmFjdG9yX2xhYmRlc2NyaXB0X0EpKSB+ICJoZWFydCIsIAogICAgVFJVRSB+ICJvdGhlciIpKSAlPiUKICBtdXRhdGUoYmhtX0EgPSBmYWN0b3IoYmhtX0EsIGxldmVscyA9IGMoImJvZHkiLCAiaGVhcnQiLCAibWluZCIsICJvdGhlciIpKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcmVvcmRlcihmYWN0b3JfbGFiZGVzY3JpcHRfQSwgYXMubnVtZXJpYyhiaG1fQSkpLCB5ID0gbWVhbikpICsKICBmYWNldF9ncmlkKGZhY3Rvcl9iaG1fQiB+IHJlb3JkZXIobGFiX0EsIGFzLm51bWVyaWMoY291bnRyeV9BKSksIAogICAgICAgICAgICAgc2NhbGVzID0gImZyZWVfeCIsIHNwYWNlID0gImZyZWVfeCIpICsKICBhbm5vdGF0ZSgicmVjdCIsIHhtaW4gPSAtSW5mLCB4bWF4ID0gSW5mLCB5bWluID0gLUluZiwgeW1heCA9IDAuODUsCiAgICAgICAgICAgZmlsbCA9ICJncmF5MjAiLCBhbHBoYSA9IDAuMikgKwogIGFubm90YXRlKCJyZWN0IiwgeG1pbiA9IC1JbmYsIHhtYXggPSBJbmYsIHltaW4gPSAwLjg1LCB5bWF4ID0gMC45NSwKICAgICAgICAgICBmaWxsID0gdmlyaWRpc0xpdGU6OnZpcmlkaXMoMiwgYmVnaW4gPSAwLjc1LzIsIGVuZCA9IDAuNzUpWzFdLCBhbHBoYSA9IDAuMikgKwogIGFubm90YXRlKCJyZWN0IiwgeG1pbiA9IC1JbmYsIHhtYXggPSBJbmYsIHltaW4gPSAwLjk1LCB5bWF4ID0gSW5mLAogICAgICAgICAgIGZpbGwgPSB2aXJpZGlzTGl0ZTo6dmlyaWRpcygyLCBiZWdpbiA9IDAuNzUvMiwgZW5kID0gMC43NSlbMl0sIGFscGhhID0gMC4yKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC44NSwgbHR5ID0gMiwgY29sb3IgPSAiZ3JheTEwIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuOTUsIGx0eSA9IDIsIGNvbG9yID0gImdyYXkxMCIpICsKICBnZW9tX3BvaW50cmFuZ2UoYWVzKHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwKICAgICAgICAgICAgICAgICAgZmF0dGVuID0gMywKICAgICAgICAgICAgICAgICAgc2hvdy5sZWdlbmQgPSBGKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChtZWFuLCAyKSwgbnNtYWxsID0gMiksCiAgICAgICAgICAgICAgICB5ID0gaWZlbHNlKGNpX2xvd2VyIDwgMC4yLCBjaV91cHBlciArIDAuMDUsIGNpX2xvd2VyIC0gMC4wNSksCiAgICAgICAgICAgICAgICB2anVzdCA9IGlmZWxzZShjaV9sb3dlciA8IDAuMiwgMCwgMSkpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMSwgMSwgMC4yKSwKICAgICAgICAgICAgICAgICAgICAgZXhwYW5kID0gZXhwYW5zaW9uKGFkZCA9IDAuMDUpKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBhZXN0aGV0aWNzID0gYygiY29sb3IiLCAiZmlsbCIpKSArCiAgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IDIxOjI1KSArCiAgbGFicyh4ID0gTlVMTCwKICAgICAgIHkgPSBleHByZXNzaW9uKCJTaW1pbGFyaXR5ICIoaXRhbGljKHJbY10pKSkpICsgCiAgZ3VpZGVzKGNvbG9yID0gIm5vbmUiLCBmaWxsID0gIm5vbmUiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gInJpZ2h0IiwKICAgICAgICBwYW5lbC5ib3JkZXIgPSBlbGVtZW50X3JlY3QoZmlsbCA9IHNjYWxlczo6YWxwaGEoIndoaXRlIiwgMCksIGNvbG9yID0gImJsYWNrIiksCiAgICAgICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTAsIGZhY2UgPSAiYm9sZCIpLCAKICAgICAgICBwbG90Lm1hcmdpbiA9IHVuaXQoYyg1LjUsIDUuNSwgNS41LCAxNS41KSwgInBvaW50IikpCmdnc2F2ZSgiLi4vZmlndXJlcy9maWcwNF9vYmxpcXVlLnBuZyIpCmBgYAoKYGBge3IgYm9keSBtaW5kIGNvbmcgY2hpbGRyZW59CiMgIkluIGVhY2ggc2FtcGxlLCB0aGVyZSB3YXMgYSBmYWN0b3IgdGhhdCB3YXMgbXVjaCBtb3JlIHNpbWlsYXIgdG8gbG9jYWwgYWR1bHRz4oCZIOKAnGJvZHktbGlrZeKAnSBmYWN0b3IuLi4KY29uZ19kZl9jaGlsZHJlbiAlPiUgCiAgZmlsdGVyKGdyZXBsKCJib2R5IiwgdG9sb3dlcihmYWN0b3JfYmhtX0EpKSwgCiAgICAgICAgIGdyZXBsKCJib2R5IiwgdG9sb3dlcihmYWN0b3JfYmhtX0IpKSkKCiMgIi4uLnRoYW4gdGhlaXIg4oCcbWluZC1saWtl4oCdIGZhY3RvciwgLi4uCmNvbmdfZGZfY2hpbGRyZW4gJT4lIAogIGZpbHRlcihncmVwbCgiYm9keSIsIHRvbG93ZXIoZmFjdG9yX2JobV9BKSksIAogICAgICAgICBncmVwbCgibWluZCIsIHRvbG93ZXIoZmFjdG9yX2JobV9CKSkpCgojICIuLi4gYW5kIGEgZmFjdG9yIHRoYXQgd2FzIG11Y2ggbW9yZSBzaW1pbGFyIHRvIGxvY2FsIGFkdWx0c+KAmSDigJxtaW5kLWxpa2XigJ0gZmFjdG9yLi4uCmNvbmdfZGZfY2hpbGRyZW4gJT4lIAogIGZpbHRlcihncmVwbCgibWluZCIsIHRvbG93ZXIoZmFjdG9yX2JobV9BKSksIAogICAgICAgICBncmVwbCgibWluZCIsIHRvbG93ZXIoZmFjdG9yX2JobV9CKSkpCgojICIuLi50aGFuIHRoZWlyIOKAnGJvZHktbGlrZeKAnSBmYWN0b3IuIgpjb25nX2RmX2NoaWxkcmVuICU+JSAKICBmaWx0ZXIoZ3JlcGwoIm1pbmQiLCB0b2xvd2VyKGZhY3Rvcl9iaG1fQSkpLCAKICAgICAgICAgZ3JlcGwoImJvZHkiLCB0b2xvd2VyKGZhY3Rvcl9iaG1fQikpKQpgYGAKCgojIEFsbCBzYW1wbGVzCgojIyBDb25ncnVlbmNlCgpgYGB7ciBjb25ncnVlbmNlIGFsbCBzYW1wbGVzfQpjb25nX2FsbCA8LSBmYS5jb25ncnVlbmNlKHggPSBsaXN0KGVmYV91c19hZHVsdHMkbG9hZGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZhX2doX2FkdWx0cyRsb2FkaW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmFfdGhfYWR1bHRzJGxvYWRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmYV9jaF9hZHVsdHMkbG9hZGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZhX3Z0X2FkdWx0cyRsb2FkaW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmFfdXNfY2hpbGRyZW4kbG9hZGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZhX2doX2NoaWxkcmVuJGxvYWRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmYV90aF9jaGlsZHJlbiRsb2FkaW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmFfY2hfY2hpbGRyZW4kbG9hZGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZhX3Z0X2NoaWxkcmVuJGxvYWRpbmdzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSA1KSAlPiUKICAjIGdldF91cHBlcl90cmlfZnVuKCkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiZmFjdG9yX0EiKSAlPiUKICBnYXRoZXIoZmFjdG9yX0IsIGNvbmcsIC1mYWN0b3JfQSkgJT4lCiAgbGVmdF9qb2luKGJpbmRfcm93cyhmYWN0b3JfbmFtZXNfYWR1bHRzICU+JSAKICAgICAgICAgICAgICAgICAgICAgICAgcmVuYW1lX2FsbChmdW5zKHBhc3RlKC4sICJBIiwgc2VwID0gIl8iKSkpLAogICAgICAgICAgICAgICAgICAgICAgZmFjdG9yX25hbWVzX2NoaWxkcmVuICU+JQogICAgICAgICAgICAgICAgICAgICAgICByZW5hbWVfYWxsKGZ1bnMocGFzdGUoLiwgIkEiLCBzZXAgPSAiXyIpKSkpKSAlPiUKICBsZWZ0X2pvaW4oYmluZF9yb3dzKGZhY3Rvcl9uYW1lc19hZHVsdHMgJT4lIAogICAgICAgICAgICAgICAgICAgICAgICByZW5hbWVfYWxsKGZ1bnMocGFzdGUoLiwgIkIiLCBzZXAgPSAiXyIpKSksCiAgICAgICAgICAgICAgICAgICAgICBmYWN0b3JfbmFtZXNfY2hpbGRyZW4gJT4lCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmFtZV9hbGwoZnVucyhwYXN0ZSguLCAiQiIsIHNlcCA9ICJfIikpKSkpCmBgYAoKYGBge3IgY29uZyBhbGwgcGFpcnMgZm9ybWF0fQojIG1ha2Ugd2lkZS1mb3JtIHZlcnNpb24gb2YgZGYKY29uZ19hbGxfdyA8LSBjb25nX2FsbCAlPiUKICBzZWxlY3QoZmFjdG9yX0EsIGZhY3Rvcl9CLCBjb25nKSAlPiUKICBzcHJlYWQoZmFjdG9yX0IsIGNvbmcpICU+JQogIGNvbHVtbl90b19yb3duYW1lcygiZmFjdG9yX0EiKQoKIyB0cmVhdCBzaW1pbGFyaXR5IG1hdHJpeCBhcyBpZiBpdCB3ZXJlIHRoZSBjb3JyZWxhdGlvbiBtYXRyaXggZm9yIGhjbHVzdApyb3cub3JkZXIgPC0gaGNsdXN0KGFzLmRpc3QoKDEgLSBjb25nX2FsbF93KS8yKSkkb3JkZXIKY29sLm9yZGVyIDwtIGhjbHVzdChhcy5kaXN0KHQoKDEgLSBjb25nX2FsbF93KS8yKSkpJG9yZGVyCgojIHJlLW9yZGVyIG1hdHJpeCBhY2NvcmluZyB0byBjbHVzdGVyaW5nCmNvbmdfYWxsX3cgPC0gY29uZ19hbGxfd1tyb3cub3JkZXIsIGNvbC5vcmRlcl0gCgojIGZvciBzb21lIHJlYXNvbiByZXNoYXBlMjo6bWVsdCgpIHdvcmtzIGJldHRlciB0aGFuIGN1cnJlbnQgdGlkeXZlcnNlIGZ1bmN0aW9ucy4uLgpjb25nX2FsbF9vcmRlcmVkIDwtIG1lbHQoYXMubWF0cml4KGNvbmdfYWxsX3cpKSAlPiUKICByZW5hbWUoZmFjdG9yX0Ffb3JkZXJlZCA9IFZhcjEsIAogICAgICAgICBmYWN0b3JfQl9vcmRlcmVkID0gVmFyMiwKICAgICAgICAgY29uZyA9IHZhbHVlKSAlPiUKICBtdXRhdGUoZmFjdG9yX0EgPSBhcy5jaGFyYWN0ZXIoZmFjdG9yX0Ffb3JkZXJlZCksCiAgICAgICAgIGZhY3Rvcl9CID0gYXMuY2hhcmFjdGVyKGZhY3Rvcl9CX29yZGVyZWQpKSAlPiUKICBmdWxsX2pvaW4oY29uZ19hbGwgJT4lIHNlbGVjdChjb250YWlucygiX0EiKSkgJT4lIGRpc3RpbmN0KCkpICU+JQogIGZ1bGxfam9pbihjb25nX2FsbCAlPiUgc2VsZWN0KGNvbnRhaW5zKCJfQiIpKSAlPiUgZGlzdGluY3QoKSkgJT4lCiAgbXV0YXRlKGxhYl9BID0gcGFzdGUocGFzdGUoY291bnRyeV9BLCBhZ2VfZ3JvdXBfQSksIGZhY3Rvcl9sYWJkZXNjcmlwdF9BLCBzZXAgPSAiLCAiKSwKICAgICAgICAgbGFiX0IgPSBwYXN0ZShwYXN0ZShjb3VudHJ5X0IsIGFnZV9ncm91cF9CKSwgZmFjdG9yX2xhYmRlc2NyaXB0X0IsIHNlcCA9ICIsICIpKQojIG11dGF0ZShzYW1wbGVfQSA9IHBhc3RlKGNvdW50cnlfQSwgYWdlX2dyb3VwX0EsIHNlcCA9ICIsICIpLAojICAgICAgICBzYW1wbGVfQiA9IHBhc3RlKGNvdW50cnlfQiwgYWdlX2dyb3VwX0IsIHNlcCA9ICIsICIpLAojICAgICAgICBsYWJfQSA9IHBhc3RlKHNhbXBsZV9BLCBmYWN0b3JfbGFiZGVzY3JpcHRfQSwgc2VwID0gIiAiKSwKIyAgICAgICAgbGFiX0IgPSBwYXN0ZShzYW1wbGVfQiwgZmFjdG9yX2xhYmRlc2NyaXB0X0IsIHNlcCA9ICIgIikpCmBgYAoKYGBge3IgY29uZyBhbGwgcGFpcnMgcGxvdCwgZmlnLndpZHRoID0gOS41LCBmaWcuYXNwID0gMC45fQojIEZJR1VSRSAyCmNvbmdfbG93ZXJfbGltIDwtIGlmZWxzZShtaW4oY29uZ19hbGxfb3JkZXJlZCRjb25nKSA+IC0wLjA1LCAtMC4wNSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBtaW4oY29uZ19hbGxfb3JkZXJlZCRjb25nKSkKIyBjb25nX3Bsb3RfY29sb3JzIDwtIGMoInJlZDQiLCAiYmx1ZTQiLCAiZGFya29yY2hpZDQiLCAiYmxhY2siKQojIGNvbmdfcGxvdF9jb2xvcnMgPC0gYygiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKQpjb25nX3Bsb3RfY29sb3JzIDwtIGMoInJlZDQiLCAicmVkNCIsICJyZWQ0IiwgImJsYWNrIikKCmNvbmdfYWxsX29yZGVyZWQgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcmVvcmRlcihsYWJfQSwgYXMubnVtZXJpYyhmYWN0b3JfQV9vcmRlcmVkKSksCiAgICAgICAgICAgICB5ID0gcmVvcmRlcihsYWJfQiwgYXMubnVtZXJpYyhkZXNjKGZhY3Rvcl9CX29yZGVyZWQpKSksCiAgICAgICAgICAgICBmaWxsID0gY29uZykpICsgCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDAuMikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQoY29uZywgMiksIG5zbWFsbCA9IDIpLAogICAgICAgICAgICAgICAgY29sb3IgPSBjYXNlX3doZW4oY29uZyA+IDAuODUgfiAiYSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZyA+IDAuNzUgfiAiYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25nID4gMC42NSB+ICJjIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAiZCIpKSwKICAgICAgICAgICAgc2hvdy5sZWdlbmQgPSBGKSArCiAgIyBib2R5LWxpa2UgZmFjdG9ycwogIGFubm90YXRlKCJyZWN0IiwgeG1pbiA9IDUuNSwgeG1heCA9IDE1LjUsIHltaW4gPSAxNi41LCB5bWF4ID0gMjYuNSwKICAgICAgICAgICBjb2xvciA9IGNvbmdfcGxvdF9jb2xvcnNbMV0sIHNpemUgPSAxLjUsIGFscGhhID0gMCkgKwogICMgbWluZC1saWtlIGZhY3RvcnMKICBhbm5vdGF0ZSgicmVjdCIsIHhtaW4gPSAxNS41LCB4bWF4ID0gMjUuNSwgeW1pbiA9IDYuNSwgeW1heCA9IDE2LjUsCiAgICAgICAgICAgY29sb3IgPSBjb25nX3Bsb3RfY29sb3JzWzJdLCBzaXplID0gMS41LCBhbHBoYSA9IDApICsKICAjIGhlYXJ0LWxpa2UgZmFjdG9ycwogIGFubm90YXRlKCJyZWN0IiwgeG1pbiA9IDI1LjUsIHhtYXggPSAzMS41LCB5bWluID0gMC41LCB5bWF4ID0gNi41LAogICAgICAgICAgIGNvbG9yID0gY29uZ19wbG90X2NvbG9yc1szXSwgc2l6ZSA9IDEuNSwgYWxwaGEgPSAwKSArCiAgIyBzY2FsZV9maWxsX3ZpcmlkaXNfYyh0cmFucyA9IHNjYWxlczo6ZXhwX3RyYW5zKGJhc2UgPSBleHAoMSkpLAogICMgICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYyhjb25nX2xvd2VyX2xpbSwgMSksIAogICMgICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gc2VxKGNvbmdfbG93ZXJfbGltLCAxLCAwLjA1KSwKICAjICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoZm9ybWF0KHNlcShjb25nX2xvd2VyX2xpbSwgMC44LCAwLjA1KSwgbnNtYWxsID0gMiksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwLjg1ID0gbW9kZXJhdGUiLCAiMC45MCIsIAogICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMC45NSA9IGhpZ2giLCAiMS4wMCIpLAogICMgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uID0gInZpcmlkaXMiLAogICMgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSA0MCkpICsKICBzY2FsZV9maWxsX2dyYWRpZW50bigjdHJhbnMgPSBzY2FsZXM6OmV4cF90cmFucyhiYXNlID0gZXhwKDEpKSwKICAgIGxpbWl0cyA9IGMoY29uZ19sb3dlcl9saW0sIDEpLCAKICAgIGJyZWFrcyA9IHNlcShjb25nX2xvd2VyX2xpbSwgMSwgMC4wNSksCiAgICBsYWJlbHMgPSBjKGZvcm1hdChzZXEoY29uZ19sb3dlcl9saW0sIDAuOCwgMC4wNSksIG5zbWFsbCA9IDIpLAogICAgICAgICAgICAgICAiMC44NSA9IG1vZGVyYXRlIiwgIjAuOTAiLCAKICAgICAgICAgICAgICAgIjAuOTUgPSBoaWdoIiwgIjEuMDAiKSwKICAgIGNvbG9ycyA9IHZpcmlkaXNMaXRlOjp2aXJpZGlzKDYpLAogICAgdmFsdWVzID0gYygwLCAwLjY1LCAwLjc1LCAwLjg1LCAwLjk1LCAxKSwKICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIoYmFyaGVpZ2h0ID0gNDApKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIiwgImdyYXk2MCIpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZSgKICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KAogICAgICAjIGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxLAogICAgICBhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMSwKICAgICAgc2l6ZSA9IHNpemVfZnVuKGNvbmdfYWxsX29yZGVyZWQkbGFiX0EsIHNpemVzID0gYygyMCwgMTQpKSwKICAgICAgY29sb3IgPSBjb2xvcl9mdW4oY29uZ19hbGxfb3JkZXJlZCRsYWJfQSwgY29sb3JfbGlzdCA9IGNvbmdfcGxvdF9jb2xvcnMpLAogICAgICBmYWNlICA9IGZhY2VfZnVuKGNvbmdfYWxsX29yZGVyZWQkbGFiX0EpKSwKICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KAogICAgICBzaXplID0gcmV2KHNpemVfZnVuKGNvbmdfYWxsX29yZGVyZWQkbGFiX0EsIHNpemVzID0gYygyMCwgMTQpKSksCiAgICAgIGNvbG9yID0gcmV2KGNvbG9yX2Z1bihjb25nX2FsbF9vcmRlcmVkJGxhYl9BLCBjb2xvcl9saXN0ID0gY29uZ19wbG90X2NvbG9ycykpLAogICAgICBmYWNlICA9IHJldihmYWNlX2Z1bihjb25nX2FsbF9vcmRlcmVkJGxhYl9BKSkpLAogICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIsIHNpemUgPSAyMCksCiAgICAjIGF4aXMudGlja3MgPSBlbGVtZW50X2xpbmUoc2l6ZSA9IDAuNSksCiAgICBheGlzLnRpY2tzLnggPSBlbGVtZW50X2xpbmUoCiAgICAgIHNpemUgPSBzaXplX2Z1bihjb25nX2FsbF9vcmRlcmVkJGxhYl9BLCBzaXplcyA9IGMoMS41LCAwLjUpKSwKICAgICAgY29sb3IgPSBjb2xvcl9mdW4oY29uZ19hbGxfb3JkZXJlZCRsYWJfQSwgY29sb3JfbGlzdCA9IGNvbmdfcGxvdF9jb2xvcnMpKSwKICAgIGF4aXMudGlja3MueSA9IGVsZW1lbnRfbGluZSgKICAgICAgc2l6ZSA9IHJldihzaXplX2Z1bihjb25nX2FsbF9vcmRlcmVkJGxhYl9BLCBzaXplcyA9IGMoMS41LCAwLjUpKSksCiAgICAgIGNvbG9yID0gcmV2KGNvbG9yX2Z1bihjb25nX2FsbF9vcmRlcmVkJGxhYl9BLCBjb2xvcl9saXN0ID0gY29uZ19wbG90X2NvbG9ycykpKSwKICAgIGF4aXMudGlja3MubGVuZ3RoID0gdW5pdCgwLjI1LCAiY20iKSkgKwogIGxhYnMoeCA9IE5VTEwsIHkgPSBOVUxMLCBmaWxsID0gZXhwcmVzc2lvbihpdGFsaWMocltjXSkpKQpnZ3NhdmUoIi4uL2ZpZ3VyZXMvZmlnMDJfb2JsaXF1ZS5wbmciKQpgYGAKCiMjIEphY2NhcmQgU2ltaWxhcml0eQoKYGBge3IgamFjY2FyZCBhbGwgc2FtcGxlc30Kc3Ryb25nX2xvYWRfYWxsIDwtIGxvYWRpbmdzX2FkdWx0cyAlPiUKICBiaW5kX3Jvd3MobG9hZGluZ3NfY2hpbGRyZW4pICU+JQogIHNlbGVjdChjb3VudHJ5LCBhZ2VfZ3JvdXAsIGZhY3RvciwgY2FwYWNpdHksIGxvYWRpbmcpICU+JQogIG11dGF0ZShzdHJvbmdfbG9hZCA9IGlmZWxzZShsb2FkaW5nID49IDAuNSwgMSwgMCkpICU+JQogIHNlbGVjdCgtbG9hZGluZykKCmNyb3NzX2xvYWRfYWxsIDwtIHN0cm9uZ19sb2FkX2FsbCAlPiUKICBmaWx0ZXIoc3Ryb25nX2xvYWQgPT0gMSkgJT4lCiAgY291bnQoY291bnRyeSwgYWdlX2dyb3VwLCBjYXBhY2l0eSwgc3Ryb25nX2xvYWQpICU+JQogIGZpbHRlcihuID4gMSkgJT4lCiAgbXV0YXRlKGNyb3NzX2xvYWQgPSBUKSAlPiUKICBzZWxlY3QoY291bnRyeSwgYWdlX2dyb3VwLCBjYXBhY2l0eSwgY3Jvc3NfbG9hZCkKCnN0cm9uZ19ub25jcm9zc19sb2FkX2FsbCA8LSBzdHJvbmdfbG9hZF9hbGwgJT4lCiAgbGVmdF9qb2luKGNyb3NzX2xvYWRfYWxsKSAlPiUKICBmaWx0ZXIoaXMubmEoY3Jvc3NfbG9hZCkpCgpqYWNjYXJkX2FsbCA8LSBzdHJvbmdfbm9uY3Jvc3NfbG9hZF9hbGwgJT4lCiAgc2VsZWN0KGZhY3RvciwgY2FwYWNpdHksIHN0cm9uZ19sb2FkKSAlPiUKICBzcHJlYWQoZmFjdG9yLCBzdHJvbmdfbG9hZCkgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCJjYXBhY2l0eSIpICU+JQogIHQoKSAlPiUKICBkaXN0KG1ldGhvZCA9ICJiaW5hcnkiLCBkaWFnID0gVCwgdXBwZXIgPSBUKSAlPiUKICBhcy5tYXRyaXgoKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJmYWN0b3JfQSIpICU+JQogIGdhdGhlcihmYWN0b3JfQiwgamFjY2FyZCwgLWZhY3Rvcl9BKSAlPiUKICAjIGNvbXB1dGUgc2ltaWxhcml0eSBpbmRleCBpbnN0ZWFkIG9mIGRpc3RhbmNlCiAgbXV0YXRlKGphY2NhcmQgPSAxIC0gamFjY2FyZCkgJT4lCiAgbGVmdF9qb2luKGJpbmRfcm93cyhmYWN0b3JfbmFtZXNfYWR1bHRzICU+JSAKICAgICAgICAgICAgICAgICAgICAgICAgcmVuYW1lX2FsbChmdW5zKHBhc3RlKC4sICJBIiwgc2VwID0gIl8iKSkpLAogICAgICAgICAgICAgICAgICAgICAgZmFjdG9yX25hbWVzX2NoaWxkcmVuICU+JQogICAgICAgICAgICAgICAgICAgICAgICByZW5hbWVfYWxsKGZ1bnMocGFzdGUoLiwgIkEiLCBzZXAgPSAiXyIpKSkpKSAlPiUKICBsZWZ0X2pvaW4oYmluZF9yb3dzKGZhY3Rvcl9uYW1lc19hZHVsdHMgJT4lIAogICAgICAgICAgICAgICAgICAgICAgICByZW5hbWVfYWxsKGZ1bnMocGFzdGUoLiwgIkIiLCBzZXAgPSAiXyIpKSksCiAgICAgICAgICAgICAgICAgICAgICBmYWN0b3JfbmFtZXNfY2hpbGRyZW4gJT4lCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmFtZV9hbGwoZnVucyhwYXN0ZSguLCAiQiIsIHNlcCA9ICJfIikpKSkpCmBgYAoKYGBge3IgamFjY2FyZCBhbGwgcGFpcnMgZm9ybWF0fQojIG1ha2Ugd2lkZS1mb3JtIHZlcnNpb24gb2YgZGYKamFjY2FyZF9hbGxfdyA8LSBqYWNjYXJkX2FsbCAlPiUKICBzZWxlY3QoZmFjdG9yX0EsIGZhY3Rvcl9CLCBqYWNjYXJkKSAlPiUKICBzcHJlYWQoZmFjdG9yX0IsIGphY2NhcmQpICU+JQogIGNvbHVtbl90b19yb3duYW1lcygiZmFjdG9yX0EiKQoKIyB0cmVhdCBkaXN0YW5jZSBtYXRyaXggYXMgaWYgaXQgd2VyZSB0aGUgY29ycmVsYXRpb24gbWF0cml4IGZvciBoY2x1c3QKcm93Lm9yZGVyIDwtIGhjbHVzdChhcy5kaXN0KCgxIC0gamFjY2FyZF9hbGxfdykvMikpJG9yZGVyCmNvbC5vcmRlciA8LSBoY2x1c3QoYXMuZGlzdCh0KCgxIC0gamFjY2FyZF9hbGxfdykvMikpKSRvcmRlcgoKIyByZS1vcmRlciBtYXRyaXggYWNjb3JpbmcgdG8gY2x1c3RlcmluZwpqYWNjYXJkX2FsbF93IDwtIGphY2NhcmRfYWxsX3dbcm93Lm9yZGVyLCBjb2wub3JkZXJdIAoKIyBmb3Igc29tZSByZWFzb24gcmVzaGFwZTI6Om1lbHQoKSB3b3JrcyBiZXR0ZXIgdGhhbiBjdXJyZW50IHRpZHl2ZXJzZSBmdW5jdGlvbnMuLi4KamFjY2FyZF9hbGxfb3JkZXJlZCA8LSBtZWx0KGFzLm1hdHJpeChqYWNjYXJkX2FsbF93KSkgJT4lCiAgcmVuYW1lKGZhY3Rvcl9BX29yZGVyZWQgPSBWYXIxLCAKICAgICAgICAgZmFjdG9yX0Jfb3JkZXJlZCA9IFZhcjIsCiAgICAgICAgIGphY2NhcmQgPSB2YWx1ZSkgJT4lCiAgbXV0YXRlKGZhY3Rvcl9BID0gYXMuY2hhcmFjdGVyKGZhY3Rvcl9BX29yZGVyZWQpLAogICAgICAgICBmYWN0b3JfQiA9IGFzLmNoYXJhY3RlcihmYWN0b3JfQl9vcmRlcmVkKSkgJT4lCiAgZnVsbF9qb2luKGphY2NhcmRfYWxsICU+JSBzZWxlY3QoY29udGFpbnMoIl9BIikpICU+JSBkaXN0aW5jdCgpKSAlPiUKICBmdWxsX2pvaW4oamFjY2FyZF9hbGwgJT4lIHNlbGVjdChjb250YWlucygiX0IiKSkgJT4lIGRpc3RpbmN0KCkpICU+JQogIG11dGF0ZShsYWJfQSA9IHBhc3RlKHBhc3RlKGNvdW50cnlfQSwgYWdlX2dyb3VwX0EpLCBmYWN0b3JfbGFiZGVzY3JpcHRfQSwgc2VwID0gIiwgIiksCiAgICAgICAgIGxhYl9CID0gcGFzdGUocGFzdGUoY291bnRyeV9CLCBhZ2VfZ3JvdXBfQiksIGZhY3Rvcl9sYWJkZXNjcmlwdF9CLCBzZXAgPSAiLCAiKSkKIyBtdXRhdGUoc2FtcGxlX0EgPSBwYXN0ZShjb3VudHJ5X0EsIGFnZV9ncm91cF9BLCBzZXAgPSAiLCAiKSwKIyAgICAgICAgc2FtcGxlX0IgPSBwYXN0ZShjb3VudHJ5X0IsIGFnZV9ncm91cF9CLCBzZXAgPSAiLCAiKSwKIyAgICAgICAgbGFiX0EgPSBwYXN0ZShzYW1wbGVfQSwgZmFjdG9yX2xhYmRlc2NyaXB0X0EsIHNlcCA9ICIgIiksCiMgICAgICAgIGxhYl9CID0gcGFzdGUoc2FtcGxlX0IsIGZhY3Rvcl9sYWJkZXNjcmlwdF9CLCBzZXAgPSAiICIpKQpgYGAKCmBgYHtyIGphY2NhcmQgYWxsIHBhaXJzIHBsb3QsIGZpZy53aWR0aCA9IDkuNSwgZmlnLmFzcCA9IDAuOX0KIyBGSUdVUkUgMiBlcXVpdmFsZW50CmphY2NhcmRfbG93ZXJfbGltIDwtIGlmZWxzZShtaW4oamFjY2FyZF9hbGxfb3JkZXJlZCRqYWNjYXJkKSA+IDAsIDAsIAogICAgICAgICAgICAgICAgICAgICAgICAgbWluKGphY2NhcmRfYWxsX29yZGVyZWQkamFjY2FyZCkpCiMgamFjY2FyZF9wbG90X2NvbG9ycyA8LSBjKCJyZWQ0IiwgImJsdWU0IiwgImRhcmtvcmNoaWQ0IiwgImJsYWNrIikKIyBqYWNjYXJkX3Bsb3RfY29sb3JzIDwtIGMoImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikKamFjY2FyZF9wbG90X2NvbG9ycyA8LSBjKCJyZWQ0IiwgInJlZDQiLCAicmVkNCIsICJibGFjayIpCgpqYWNjYXJkX2FsbF9vcmRlcmVkICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIobGFiX0EsIGFzLm51bWVyaWMoZmFjdG9yX0Ffb3JkZXJlZCkpLAogICAgICAgICAgICAgeSA9IHJlb3JkZXIobGFiX0IsIGFzLm51bWVyaWMoZGVzYyhmYWN0b3JfQl9vcmRlcmVkKSkpLAogICAgICAgICAgICAgZmlsbCA9IGphY2NhcmQpKSArIAogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIsIHNpemUgPSAwLjIpICsKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gY2FzZV93aGVuKAogICAgIyBqYWNjYXJkICVpbiUgYygwLCAxKSB+IGZvcm1hdChyb3VuZChqYWNjYXJkLCAwKSwgbnNtYWxsID0gMCksCiAgICBUUlVFIH4gZm9ybWF0KHJvdW5kKGphY2NhcmQsIDIpLCBuc21hbGwgPSAyKSksCiAgICBjb2xvciA9IGNhc2Vfd2hlbihqYWNjYXJkID49IDAuNzUgfiAiYSIsIAogICAgICAgICAgICAgICAgICAgICAgamFjY2FyZCA+PSAwLjUgfiAiYiIsCiAgICAgICAgICAgICAgICAgICAgICBqYWNjYXJkID49IDAuMjUgfiAiYyIsCiAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gImQiKSksCiAgICBzaG93LmxlZ2VuZCA9IEYpICsKICAjIG1pbmQtbGlrZSBhbmQgb3RoZXIgZmFjdG9ycwogIGFubm90YXRlKCJyZWN0IiwgeG1pbiA9IDAuNSwgeG1heCA9IDE0LjUsIHltaW4gPSAxNy41LCB5bWF4ID0gMzEuNSwKICAgICAgICAgICBjb2xvciA9IGphY2NhcmRfcGxvdF9jb2xvcnNbMl0sIHNpemUgPSAxLjUsIGFscGhhID0gMCkgKwogICMgYm9keS1saWtlIGZhY3RvcnMKICBhbm5vdGF0ZSgicmVjdCIsIHhtaW4gPSAxNC41LCB4bWF4ID0gMjQuNSwgeW1pbiA9IDcuNSwgeW1heCA9IDE3LjUsCiAgICAgICAgICAgY29sb3IgPSBqYWNjYXJkX3Bsb3RfY29sb3JzWzFdLCBzaXplID0gMS41LCBhbHBoYSA9IDApICsKICAjIGhlYXJ0LWxpa2UgZmFjdG9ycwogIGFubm90YXRlKCJyZWN0IiwgeG1pbiA9IDI0LjUsIHhtYXggPSAzMS41LCB5bWluID0gMC41LCB5bWF4ID0gNy41LAogICAgICAgICAgIGNvbG9yID0gamFjY2FyZF9wbG90X2NvbG9yc1szXSwgc2l6ZSA9IDEuNSwgYWxwaGEgPSAwKSArCiAgc2NhbGVfZmlsbF92aXJpZGlzX2MoI3RyYW5zID0gc2NhbGVzOjpleHBfdHJhbnMoYmFzZSA9IGV4cCgxKSksCiAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYyhqYWNjYXJkX2xvd2VyX2xpbSwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gc2VxKGphY2NhcmRfbG93ZXJfbGltLCAxLCAwLjA1KSwKICAgICAgICAgICAgICAgICAgICAgICAjIGxhYmVscyA9IGMoZm9ybWF0KHNlcShqYWNjYXJkX2xvd2VyX2xpbSwgMC44LCAwLjA1KSwgCiAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICBuc21hbGwgPSAyKSwKICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgIjAuODUgPSBtb2RlcmF0ZSIsICIwLjkwIiwKICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgIjAuOTUgPSBoaWdoIiwgIjEuMDAiKSwKICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gPSAidmlyaWRpcyIsIAogICAgICAgICAgICAgICAgICAgICAgICMgZGlyZWN0aW9uID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSA0MCkpICsKICAjIHNjYWxlX2ZpbGxfZ3JhZGllbnRuKCN0cmFucyA9IHNjYWxlczo6ZXhwX3RyYW5zKGJhc2UgPSBleHAoMSkpLAogICMgICBsaW1pdHMgPSBjKGphY2NhcmRfbG93ZXJfbGltLCAxKSwgCiAgIyAgIGJyZWFrcyA9IHNlcShqYWNjYXJkX2xvd2VyX2xpbSwgMSwgMC4wNSksCiAgIyAgIGxhYmVscyA9IGMoZm9ybWF0KHNlcShqYWNjYXJkX2xvd2VyX2xpbSwgMC44LCAwLjA1KSwgbnNtYWxsID0gMiksCiAgIyAgICAgICAgICAgICAgIjAuODUgPSBtb2RlcmF0ZSIsICIwLjkwIiwgCiAgIyAgICAgICAgICAgICAgIjAuOTUgPSBoaWdoIiwgIjEuMDAiKSwKICAjICAgY29sb3JzID0gdmlyaWRpc0xpdGU6OnZpcmlkaXMoNiksCiAgIyAgIHZhbHVlcyA9IGMoMCwgMC42NSwgMC43NSwgMC44NSwgMC45NSwgMSksCiAgIyAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIoYmFyaGVpZ2h0ID0gNDApKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIiwgImdyYXk2MCIpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZSgKICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KAogICAgICAjIGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxLAogICAgICBhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMSwKICAgICAgc2l6ZSA9IHNpemVfZnVuKGphY2NhcmRfYWxsX29yZGVyZWQkbGFiX0EsIHNpemVzID0gYygyMCwgMTQpKSwKICAgICAgY29sb3IgPSBjb2xvcl9mdW4oamFjY2FyZF9hbGxfb3JkZXJlZCRsYWJfQSwgY29sb3JfbGlzdCA9IGphY2NhcmRfcGxvdF9jb2xvcnMpLAogICAgICBmYWNlICA9IGZhY2VfZnVuKGphY2NhcmRfYWxsX29yZGVyZWQkbGFiX0EpKSwKICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KAogICAgICBzaXplID0gcmV2KHNpemVfZnVuKGphY2NhcmRfYWxsX29yZGVyZWQkbGFiX0EsIHNpemVzID0gYygyMCwgMTQpKSksCiAgICAgIGNvbG9yID0gcmV2KGNvbG9yX2Z1bihqYWNjYXJkX2FsbF9vcmRlcmVkJGxhYl9BLCBjb2xvcl9saXN0ID0gamFjY2FyZF9wbG90X2NvbG9ycykpLAogICAgICBmYWNlICA9IHJldihmYWNlX2Z1bihqYWNjYXJkX2FsbF9vcmRlcmVkJGxhYl9BKSkpLAogICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIsIHNpemUgPSAyMCksCiAgICAjIGF4aXMudGlja3MgPSBlbGVtZW50X2xpbmUoc2l6ZSA9IDAuNSksCiAgICBheGlzLnRpY2tzLnggPSBlbGVtZW50X2xpbmUoCiAgICAgIHNpemUgPSBzaXplX2Z1bihqYWNjYXJkX2FsbF9vcmRlcmVkJGxhYl9BLCBzaXplcyA9IGMoMS41LCAwLjUpKSwKICAgICAgY29sb3IgPSBjb2xvcl9mdW4oamFjY2FyZF9hbGxfb3JkZXJlZCRsYWJfQSwgY29sb3JfbGlzdCA9IGphY2NhcmRfcGxvdF9jb2xvcnMpKSwKICAgIGF4aXMudGlja3MueSA9IGVsZW1lbnRfbGluZSgKICAgICAgc2l6ZSA9IHJldihzaXplX2Z1bihqYWNjYXJkX2FsbF9vcmRlcmVkJGxhYl9BLCBzaXplcyA9IGMoMS41LCAwLjUpKSksCiAgICAgIGNvbG9yID0gcmV2KGNvbG9yX2Z1bihqYWNjYXJkX2FsbF9vcmRlcmVkJGxhYl9BLCBjb2xvcl9saXN0ID0gamFjY2FyZF9wbG90X2NvbG9ycykpKSwKICAgIGF4aXMudGlja3MubGVuZ3RoID0gdW5pdCgwLjI1LCAiY20iKSkgKwogIGxhYnMoeCA9IE5VTEwsIHkgPSBOVUxMLCBmaWxsID0gIkphY2NhcmRcbnNpbWlsYXJpdHkiKQpnZ3NhdmUoIi4uL2ZpZ3VyZXMvZmlnMDJfb2JsaXF1ZV9qYWNjYXJkLnBuZyIpCmBgYAoKIyMgRGV2ZWxvcG1lbnRhbCBjb21wYXJpc29ucwoKYGBge3IgZGV2IGNvbXAgYWxsIHNpdGVzLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMS4yfQojIEZJR1VSRSBTNSwgRklHVVJFIFM2LCBGSUdVUkUgUzcsIEZJR1VSRSBTOCwgRklHVVJFIFM5CnBsb3RfZ3JpZChoZWF0bWFwX2NvbXBfZnVuKAogIGVmYV9saXN0ID0gbGlzdChlZmFfdXNfYWR1bHRzLCBlZmFfdXNfY2hpbGRyZW4pLCBwYWRkaW5nID0gRiksCiAgZGV2X2NvbmdfcGxvdF9mdW4oY29uZ19kZl9jaGlsZHJlbiwgd2hpY2hfY291bnRyeSA9ICJVUyIsIHBhZGRpbmcgPSBUKSwKICBuY29sID0gMSwgcmVsX2hlaWdodHMgPSBjKDIsIDEuNSksIGxhYmVscyA9ICJBVVRPIikKZ2dzYXZlKCIuLi9maWd1cmVzL2ZpZ1MwNV9vYmxpcXVlLnBuZyIpCgpwbG90X2dyaWQoaGVhdG1hcF9jb21wX2Z1bigKICBlZmFfbGlzdCA9IGxpc3QoZWZhX2doX2FkdWx0cywgZWZhX2doX2NoaWxkcmVuKSwgcGFkZGluZyA9IEYpLAogIGRldl9jb25nX3Bsb3RfZnVuKGNvbmdfZGZfY2hpbGRyZW4sIHdoaWNoX2NvdW50cnkgPSAiR2hhbmEiLCBwYWRkaW5nID0gVCksCiAgbmNvbCA9IDEsIHJlbF9oZWlnaHRzID0gYygyLCAxLjUpLCBsYWJlbHMgPSAiQVVUTyIpCmdnc2F2ZSgiLi4vZmlndXJlcy9maWdTMDZfb2JsaXF1ZS5wbmciKQoKcGxvdF9ncmlkKGhlYXRtYXBfY29tcF9mdW4oCiAgZWZhX2xpc3QgPSBsaXN0KGVmYV90aF9hZHVsdHMsIGVmYV90aF9jaGlsZHJlbiksIHBhZGRpbmcgPSBGKSwKICBkZXZfY29uZ19wbG90X2Z1bihjb25nX2RmX2NoaWxkcmVuLCB3aGljaF9jb3VudHJ5ID0gIlRoYWlsYW5kIiwgcGFkZGluZyA9IFQpLAogIG5jb2wgPSAxLCByZWxfaGVpZ2h0cyA9IGMoMiwgMS41KSwgbGFiZWxzID0gIkFVVE8iKQpnZ3NhdmUoIi4uL2ZpZ3VyZXMvZmlnUzA3X29ibGlxdWUucG5nIikKCnBsb3RfZ3JpZChoZWF0bWFwX2NvbXBfZnVuKAogIGVmYV9saXN0ID0gbGlzdChlZmFfY2hfYWR1bHRzLCBlZmFfY2hfY2hpbGRyZW4pLCBwYWRkaW5nID0gRiksCiAgZGV2X2NvbmdfcGxvdF9mdW4oY29uZ19kZl9jaGlsZHJlbiwgd2hpY2hfY291bnRyeSA9ICJDaGluYSIsIHBhZGRpbmcgPSBUKSwKICBuY29sID0gMSwgcmVsX2hlaWdodHMgPSBjKDIsIDEuNSksIGxhYmVscyA9ICJBVVRPIikKZ2dzYXZlKCIuLi9maWd1cmVzL2ZpZ1MwOF9vYmxpcXVlLnBuZyIpCgpwbG90X2dyaWQoaGVhdG1hcF9jb21wX2Z1bigKICBlZmFfbGlzdCA9IGxpc3QoZWZhX3Z0X2FkdWx0cywgZWZhX3Z0X2NoaWxkcmVuKSwgcGFkZGluZyA9IEYpLAogIGRldl9jb25nX3Bsb3RfZnVuKGNvbmdfZGZfY2hpbGRyZW4sIHdoaWNoX2NvdW50cnkgPSAiVmFudWF0dSIsIHBhZGRpbmcgPSBUKSwKICBuY29sID0gMSwgcmVsX2hlaWdodHMgPSBjKDIsIDEuNSksIGxhYmVscyA9ICJBVVRPIikKZ2dzYXZlKCIuLi9maWd1cmVzL2ZpZ1MwOV9vYmxpcXVlLnBuZyIpCmBgYAoKYGBge3IgbG9hZGluZ3MgYWxsIHNhbXBsZXMsIGZpZy53aWR0aCA9IDYuNSwgZmlnLmFzcCA9IDAuNn0KIyBGSUdVUkUgMSwgdmVyc2lvbiAxCmhlYXRtYXBfY29tcF9mdW4obGlzdChlZmFfdXNfYWR1bHRzLCBlZmFfZ2hfYWR1bHRzLCBlZmFfdGhfYWR1bHRzLCAKICAgICAgICAgICAgICAgICAgICAgIGVmYV9jaF9hZHVsdHMsIGVmYV92dF9hZHVsdHMsIAogICAgICAgICAgICAgICAgICAgICAgZWZhX3VzX2NoaWxkcmVuLCBlZmFfZ2hfY2hpbGRyZW4sIGVmYV90aF9jaGlsZHJlbiwgCiAgICAgICAgICAgICAgICAgICAgICBlZmFfY2hfY2hpbGRyZW4sIGVmYV92dF9jaGlsZHJlbiksIAogICAgICAgICAgICAgICAgIGZhY2V0X29yZGVyX3ZhcnMgPSBjKCJhZ2VfZ3JvdXAiLCAiY291bnRyeSIsICJmbnVtIiksCiAgICAgICAgICAgICAgICAgZmFjZXRfbGFiX3NwbGl0ID0gVCkgKwogIHRoZW1lKHBhbmVsLnNwYWNpbmcueCA9IHVuaXQoYyhyZXAoMC4yLCA0KSwgMSwgcmVwKDAuMiwgNCkpLCAibGluZSIpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArCiAgZ3VpZGVzKGZpbGwgPSBndWlkZV9jb2xvcmJhcihiYXJ3aWR0aCA9IDMwLCBiYXJoZWlnaHQgPSAwLjUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiRmFjdG9yIGxvYWRpbmciLCB0aXRsZS52anVzdCA9IDEpKQpnZ3NhdmUoIi4uL2ZpZ3VyZXMvZmlnMDF2MV9vYmxpcXVlLnBuZyIpCmBgYAoKYGBge3IgZG9taW5hbnQgZmFjdG9yLCBmaWcud2lkdGggPSA2LjUsIGZpZy5hc3AgPSAwLjYsIGluY2x1ZGUgPSBGfQojIGhpZ2hsaWdodGluZyBkb21pbmFudCBmYWN0b3IgKGlnbm9yaW5nIGNyb3NzLWxvYWRpbmdzID4gMC4wNSkKbG9hZGluZ3NfYWxsIDwtIGxvYWRpbmdzX2FkdWx0cyAlPiUKICBzZWxlY3QoLWNvbnRhaW5zKCJvcmQiKSkgJT4lCiAgZnVsbF9qb2luKGxvYWRpbmdzX2NoaWxkcmVuICU+JQogICAgICAgICAgICAgIHNlbGVjdCgtY29udGFpbnMoIm9yZCIpKSkKCmRvbV9mYWN0b3JzX2FsbCA8LSBsb2FkaW5nc19hbGwgJT4lCiAgZ3JvdXBfYnkoY291bnRyeSwgYWdlX2dyb3VwLCBjYXBhY2l0eSkgJT4lIAogIHRvcF9uKDEsIGFicyhsb2FkaW5nKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIHNlbGVjdChjb3VudHJ5LCBhZ2VfZ3JvdXAsIGNhcGFjaXR5LCBmYWN0b3IsIGxvYWRpbmcpICU+JQogIHJlbmFtZShkb21fZmFjdG9yID0gZmFjdG9yLAogICAgICAgICBkb21fbG9hZGluZyA9IGxvYWRpbmcpCgpyZWN0X2RmIDwtIGxvYWRpbmdzX2FsbCAlPiUKICBmdWxsX2pvaW4oZG9tX2ZhY3RvcnNfYWxsKSAlPiUKICBtdXRhdGUoZm51bSA9IGdzdWIoIi4qX0YiLCAiRiIsIGZhY3RvcikpICU+JQogIHNlbGVjdCgtc3RhcnRzX3dpdGgoImZhY3RvciIpKSAlPiUKICBzcHJlYWQoZm51bSwgbG9hZGluZykgJT4lCiAgbXV0YXRlKGRpZmYxID0gYWJzKGRvbV9sb2FkaW5nKSAtIGFicyhGMSksCiAgICAgICAgIGRpZmYyID0gYWJzKGRvbV9sb2FkaW5nKSAtIGFicyhGMiksCiAgICAgICAgIGRpZmYzID0gYWJzKGRvbV9sb2FkaW5nKSAtIGFicyhGMyksCiAgICAgICAgIGRpZmY0ID0gYWJzKGRvbV9sb2FkaW5nKSAtIGFicyhGNCkpICU+JQogIHNlbGVjdCgtYyhkb21fbG9hZGluZywgc3RhcnRzX3dpdGgoIkYiKSkpICU+JQogIGdhdGhlcih3aGljaF9kaWZmLCBkaWZmLCBzdGFydHNfd2l0aCgiZGlmZiIpKSAlPiUKICBmaWx0ZXIoZGlmZiAhPSAwLCAhaXMubmEoZGlmZikpICU+JQogIGdyb3VwX2J5KGNvdW50cnksIGFnZV9ncm91cCwgY2FwYWNpdHkpICU+JQogIHRvcF9uKC0xLCBkaWZmKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgbXV0YXRlKGFueV9zbWFsbCA9IGRpZmYgPCAwLjA1KSAlPiUKICByZW5hbWUoZmFjdG9yID0gZG9tX2ZhY3RvcikgJT4lCiAgbGVmdF9qb2luKGZ1bGxfam9pbihmYWN0b3JfbmFtZXNfYWR1bHRzLCBmYWN0b3JfbmFtZXNfY2hpbGRyZW4pKQoKIyBhbmFsb2cgdG8gRklHVVJFIDEKdGVtcF9jYXBfb3JkZXIgPC0gZmEuc29ydChlZmFfdXNfYWR1bHRzKSRsb2FkaW5nc1tdICU+JSByb3duYW1lcygpICU+JSByZXYoKQoKZ2dwbG90KHJlY3RfZGYgJT4lCiAgICAgICAgIGZpbHRlcighaXMubmEoYW55X3NtYWxsKSkgJT4lCiAgICAgICAgIG11dGF0ZShjYXBhY2l0eSA9IGZhY3RvcihjYXBhY2l0eSwgbGV2ZWxzID0gdGVtcF9jYXBfb3JkZXIpKSwKICAgICAgIGFlcyh4ID0gZmFjdG9yX2xhYmRlc2NyaXB0LCAKICAgICAgICAgICB5ID0gY2FwYWNpdHksIAogICAgICAgICAgIGZpbGwgPSBhbnlfc21hbGwpKSArCiAgZmFjZXRfZ3JpZCh+IGludGVyYWN0aW9uKGNvdW50cnksIGFnZV9ncm91cCksIHNwYWNlID0gImZyZWUiLCBzY2FsZXMgPSAiZnJlZSIpICsKICBnZW9tX3RpbGUoKSArCiAgdGhlbWUocGFuZWwuc3BhY2luZy54ID0gdW5pdChjKHJlcCgwLjIsIDQpLCAxLCByZXAoMC4yLCA0KSksICJsaW5lIiksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKQojIGdnc2F2ZSgiLi4vZmlndXJlcy9maWcwMXYyX29ibGlxdWUucG5nIikKYGBgCgpgYGB7ciBsb2FkaW5ncyBhbGwgc2FtcGxlcyB2MiwgZmlnLndpZHRoID0gNi41LCBmaWcuYXNwID0gMC42fQojIEZJR1VSRSAxLCB2ZXJzaW9uIDIgKGluY2x1ZGVkIGluIG1haW4gdGV4dCkKbG9hZGluZ3NfYWR1bHRzICU+JQogIGJpbmRfcm93cyhsb2FkaW5nc19jaGlsZHJlbikgJT4lCiAgIyBzZWxlY3QoLWNvbnRhaW5zKCJfb3JkIikpICU+JQogIG11dGF0ZShmYWN0b3JfYmhtID0gY2FzZV93aGVuKAogICAgZ3JlcGwoImJvZHkiLCB0b2xvd2VyKGZhY3Rvcl9kZXNjcmlwdCkpIH4gIkJPRFktbGlrZSBmYWN0b3JzIiwKICAgIGdyZXBsKCJtaW5kIiwgdG9sb3dlcihmYWN0b3JfZGVzY3JpcHQpKSB+ICJNSU5ELWxpa2UgZmFjdG9ycyIsCiAgICBncmVwbCgiaGVhcnQiLCB0b2xvd2VyKGZhY3Rvcl9kZXNjcmlwdCkpIH4gIkhFQVJULWxpa2UgZmFjdG9ycyIsCiAgICBUUlVFIH4gIk90aGVyIikpICU+JQogIGxlZnRfam9pbihzdHJvbmdfbm9uY3Jvc3NfbG9hZF9hbGwgJT4lIAogICAgICAgICAgICAgIHNlbGVjdChmYWN0b3IsIGNhcGFjaXR5LCBzdHJvbmdfbG9hZCwgY3Jvc3NfbG9hZCkpICU+JQogIG11dGF0ZShmb250X2ZhY2UgPSBjYXNlX3doZW4oCiAgICBzdHJvbmdfbG9hZCA9PSAxICYgaXMubmEoY3Jvc3NfbG9hZCkgfiAiYm9sZCIsCiAgICBUUlVFIH4gInBsYWluIikpICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocGFzdGUoZ3N1YigiRmFjdG9yICIsICJGIiwgZmFjdG9yX25hbWUpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY3Rvcl9kZXNjcmlwdCwgc2VwID0gIjogIiksIAogICAgICAgICAgICAgICAgICAgICAgICAgYXMubnVtZXJpYyhjb3VudHJ5KSksIAogICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHlfb3JkX3VzLCBkZXNjKGNhcGFjaXR5X29yZF91cykpLAogICAgICAgICAgICAgZmlsbCA9IGxvYWRpbmcpKSArCiAgZmFjZXRfZ3JpZChjb2xzID0gdmFycyhmYWN0b3JfYmhtLCBhZ2VfZ3JvdXApLCAKICAgICAgICAgICAgIHNjYWxlcyA9ICJmcmVlIiwgc3BhY2UgPSAiZnJlZSIpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMC4yKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMiksIAogICAgICAgICAgICAgICAgZm9udGZhY2UgPSBmb250X2ZhY2UpLCBzaXplID0gMykgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnMoeCA9IE5VTEwsIHkgPSBOVUxMKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpLAogICAgICAgIHBhbmVsLnNwYWNpbmcueCA9IHVuaXQoYygwLjIsIDEsIDAuMiwgMSwgMC4yLCAxLCAwLjIpLCAibGluZSIpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArCiAgZ3VpZGVzKGZpbGwgPSBndWlkZV9jb2xvcmJhcihiYXJ3aWR0aCA9IDMwLCBiYXJoZWlnaHQgPSAwLjUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiRmFjdG9yIGxvYWRpbmciLCB0aXRsZS52anVzdCA9IDEpKQogICMgc2VsZWN0KGNvdW50cnksIGNhcGFjaXR5LCBsb2FkaW5nKSAlPiUKICAjIG11dGF0ZShsb2FkaW5nID0gcm91bmQobG9hZGluZywgMikpICU+JQogICMgc3ByZWFkKGNvdW50cnksIGxvYWRpbmcpCmdnc2F2ZSgiLi4vZmlndXJlcy9maWcwMXYyX29ibGlxdWUucG5nIikKYGBgCgojIyBWYXJpYW5jZSBhY2NvdW50ZWQgZm9yCgpgYGB7cn0KVmFjY291bnRlZF9mdW4gPC0gZnVuY3Rpb24oZWZhX25hbWUpIHsKICBjb3VudHJ5IDwtIGdzdWIoImVmYV8iLCAiIiwgZWZhX25hbWUpCiAgY291bnRyeSA8LSBnc3ViKCJfLiokIiwgIiIsIGNvdW50cnkpCiAgYWdlX2dyb3VwIDwtIGNhc2Vfd2hlbihncmVwbCgiYWR1bHQiLCBlZmFfbmFtZSkgfiAiYWR1bHRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGdyZXBsKCJjaGlsZCIsIGVmYV9uYW1lKSB+ICJjaGlsZHJlbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gTkFfY2hhcmFjdGVyXykKICAKICBlZmEgPC0gZ2V0KGVmYV9uYW1lKQogIHJlcyA8LSBlZmEkVmFjY291bnRlZCAlPiUKICAgIGRhdGEuZnJhbWUoKSAlPiUKICAgIHJvd25hbWVzX3RvX2NvbHVtbigibWV0cmljIikgJT4lCiAgICBtdXRhdGUoY291bnRyeSA9IGZhY3Rvcihjb3VudHJ5LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoInVzIiwgImdoIiwgInRoIiwgImNoIiwgInZ0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBsZXZlbHNfY291bnRyeSksCiAgICAgICAgICAgYWdlX2dyb3VwID0gZmFjdG9yKGFnZV9ncm91cCwgbGV2ZWxzID0gYygiYWR1bHRzIiwgImNoaWxkcmVuIikpKQogIAogIHJldHVybihyZXMpCn0KYGBgCgpgYGB7cn0KVmFjY291bnRlZF9hbGwgPC0gVmFjY291bnRlZF9mdW4oImVmYV91c19hZHVsdHMiKSAlPiUKICBmdWxsX2pvaW4oVmFjY291bnRlZF9mdW4oImVmYV9naF9hZHVsdHMiKSkgJT4lCiAgZnVsbF9qb2luKFZhY2NvdW50ZWRfZnVuKCJlZmFfdGhfYWR1bHRzIikpICU+JQogIGZ1bGxfam9pbihWYWNjb3VudGVkX2Z1bigiZWZhX2NoX2FkdWx0cyIpKSAlPiUKICBmdWxsX2pvaW4oVmFjY291bnRlZF9mdW4oImVmYV92dF9hZHVsdHMiKSkgJT4lCiAgZnVsbF9qb2luKFZhY2NvdW50ZWRfZnVuKCJlZmFfdXNfY2hpbGRyZW4iKSkgJT4lCiAgZnVsbF9qb2luKFZhY2NvdW50ZWRfZnVuKCJlZmFfZ2hfY2hpbGRyZW4iKSkgJT4lCiAgZnVsbF9qb2luKFZhY2NvdW50ZWRfZnVuKCJlZmFfdGhfY2hpbGRyZW4iKSkgJT4lCiAgZnVsbF9qb2luKFZhY2NvdW50ZWRfZnVuKCJlZmFfY2hfY2hpbGRyZW4iKSkgJT4lCiAgZnVsbF9qb2luKFZhY2NvdW50ZWRfZnVuKCJlZmFfdnRfY2hpbGRyZW4iKSkKYGBgCgpgYGB7cn0KVmFjY291bnRlZF9hbGwgJT4lCiAgZmlsdGVyKG1ldHJpYyAlaW4lIGMoIlByb3BvcnRpb24gVmFyIiwgIlByb3BvcnRpb24gRXhwbGFpbmVkIikpICU+JQogIGdhdGhlcihmYWN0b3IsIHZhbHVlLCBzdGFydHNfd2l0aCgiRiIpKSAlPiUKICBtdXRhdGUodmFsdWUgPSByb3VuZCh2YWx1ZSwgMikpICU+JQogIHNwcmVhZChjb3VudHJ5LCB2YWx1ZSkgJT4lCiAgYXJyYW5nZShhZ2VfZ3JvdXAsIGZhY3RvciwgbWV0cmljKQpgYGAKYGBge3J9ClZhY2NvdW50ZWRfYWxsICU+JQogIGZpbHRlcihtZXRyaWMgPT0gIkN1bXVsYXRpdmUgVmFyIikgJT4lCiAgZ2F0aGVyKGZhY3RvciwgdmFsdWUsIHN0YXJ0c193aXRoKCJGIikpICU+JQogIGdyb3VwX2J5KGNvdW50cnksIGFnZV9ncm91cCkgJT4lCiAgdG9wX24oMSwgdmFsdWUpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBtdXRhdGUodmFsdWUgPSByb3VuZCh2YWx1ZSwgMikpICU+JQogIHNlbGVjdChtZXRyaWMsIGNvdW50cnksIGFnZV9ncm91cCwgdmFsdWUpICU+JQogIHNwcmVhZChjb3VudHJ5LCB2YWx1ZSkgJT4lCiAgYXJyYW5nZShhZ2VfZ3JvdXAsIG1ldHJpYykKYGBgCgojIyBJbnRlcmZhY3RvciBjb3JyZWxhdGlvbnMKCmBgYHtyLCBpbmNsdWRlID0gRn0KaW50ZXJmYWN0b3JfY29yX2Z1biA8LSBmdW5jdGlvbihlZmFfbmFtZSkgewogIHNhbXBsZSA9IGdzdWIoImVmYV8iLCAiIiwgZWZhX25hbWUpCiAgY291bnRyeSA9IGdzdWIoIl8uKiQiLCAiIiwgc2FtcGxlKQogIGFnZV9ncm91cCA9IGdzdWIoIl4uKl8iLCAiIiwgc2FtcGxlKQogIAogIGVmYSA8LSBnZXQoZWZhX25hbWUpCiAgCiAgIyBoYWNreSwgbm90IHN1cmUgd2h5IHRoaXMgd29ya3MsIGJ1dCBpdCdzIHRoZSBvbmx5IHdheSBpIGNvdWxkIGdldCBDSXMKICBkZiA8LSBwcmludChlZmEpICU+JQogICAgZGF0YS5mcmFtZSgpICU+JQogICAgcm93bmFtZXNfdG9fY29sdW1uKCJmYWN0b3JfcGFpciIpICU+JQogICAgc2VwYXJhdGUoZmFjdG9yX3BhaXIsIGMoImZhY3Rvcl9BIiAsImZhY3Rvcl9CIiksIHNlcCA9ICItIikgJT4lCiAgICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiZmFjdG9yIikpLCB+IGdzdWIoIl4uKl8iLCAiIiwgLikpCiAgCiAgIyBkZiA8LSBlZmEkUGhpICU+JQogICMgICBkYXRhLmZyYW1lKCkgJT4lCiAgIyAgIHJvd25hbWVzX3RvX2NvbHVtbigiZmFjdG9yX0EiKQogICMgZ2F0aGVyKGZhY3Rvcl9CLCBwaGksIC1mYWN0b3JfQSkKICAKICBkZiA8LSBkZiAlPiUKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiZmFjdG9yIikpLAogICAgICAgICAgICB+IHBhc3RlMChjb3VudHJ5LCB0b3VwcGVyKGFnZV9ncm91cCksICJfIiwgLikpICU+JQogICAgbXV0YXRlKGNvdW50cnkgPSBmYWN0b3IoY291bnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoInVzIiwgImdoIiwgInRoIiwgImNoIiwgInZ0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBsZXZlbHNfY291bnRyeSksCiAgICAgICAgICAgYWdlX2dyb3VwID0gZmFjdG9yKGFnZV9ncm91cCwgbGV2ZWxzID0gYygiYWR1bHRzIiwgImNoaWxkcmVuIikpKQogIAogIHJldHVybihkZikKfQpgYGAKCmBgYHtyLCByZXN1bHRzID0gImhpZGUiLCAsIGluY2x1ZGUgPSBGfQpkX3BoaSA8LSBiaW5kX3Jvd3MoaW50ZXJmYWN0b3JfY29yX2Z1bigiZWZhX3VzX2FkdWx0cyIpLAogICAgICAgICAgICAgICAgICAgaW50ZXJmYWN0b3JfY29yX2Z1bigiZWZhX2doX2FkdWx0cyIpLAogICAgICAgICAgICAgICAgICAgaW50ZXJmYWN0b3JfY29yX2Z1bigiZWZhX3RoX2FkdWx0cyIpLAogICAgICAgICAgICAgICAgICAgaW50ZXJmYWN0b3JfY29yX2Z1bigiZWZhX2NoX2FkdWx0cyIpLAogICAgICAgICAgICAgICAgICAgaW50ZXJmYWN0b3JfY29yX2Z1bigiZWZhX3Z0X2FkdWx0cyIpLAogICAgICAgICAgICAgICAgICAgaW50ZXJmYWN0b3JfY29yX2Z1bigiZWZhX3VzX2NoaWxkcmVuIiksCiAgICAgICAgICAgICAgICAgICBpbnRlcmZhY3Rvcl9jb3JfZnVuKCJlZmFfZ2hfY2hpbGRyZW4iKSwKICAgICAgICAgICAgICAgICAgIGludGVyZmFjdG9yX2Nvcl9mdW4oImVmYV90aF9jaGlsZHJlbiIpLAogICAgICAgICAgICAgICAgICAgaW50ZXJmYWN0b3JfY29yX2Z1bigiZWZhX2NoX2NoaWxkcmVuIiksCiAgICAgICAgICAgICAgICAgICBpbnRlcmZhY3Rvcl9jb3JfZnVuKCJlZmFfdnRfY2hpbGRyZW4iKSkKYGBgCgpgYGB7ciwgaW5jbHVkZSA9IEZ9CmRfcGhpIDwtIGRfcGhpICU+JQogIGZ1bGxfam9pbihkX3BoaSAlPiUKICAgICAgICAgICAgICByZW5hbWVfYWxsKH4gZ3N1YigiZmFjdG9yX0EiLCAiZmFjdG9yX0MiLCAuKSkgJT4lCiAgICAgICAgICAgICAgcmVuYW1lX2FsbCh+IGdzdWIoImZhY3Rvcl9CIiwgImZhY3Rvcl9EIiwgLikpICU+JQogICAgICAgICAgICAgIHJlbmFtZV9hbGwofiBnc3ViKCJmYWN0b3JfRCIsICJmYWN0b3JfQSIsIC4pKSAlPiUKICAgICAgICAgICAgICByZW5hbWVfYWxsKH4gZ3N1YigiZmFjdG9yX0MiLCAiZmFjdG9yX0IiLCAuKSkpICU+JSBkaXN0aW5jdCgpCmBgYAoKYGBge3IsIGluY2x1ZGUgPSBGfQpkX3BoaSA8LSBkX3BoaSAlPiUKICBzZWxlY3QoLWNvdW50cnksIC1hZ2VfZ3JvdXApICU+JQogIGxlZnRfam9pbihmYWN0b3JfbmFtZXNfYWR1bHRzICU+JQogICAgICAgICAgICAgIGZ1bGxfam9pbihmYWN0b3JfbmFtZXNfY2hpbGRyZW4pICU+JQogICAgICAgICAgICAgIHJlbmFtZV9hbGwofnBhc3RlMCguLCAiX0EiKSkpICU+JQogIG11dGF0ZShmYWN0b3JfYmhtX0EgPSBjYXNlX3doZW4oCiAgICBncmVwbCgiYm9keSIsIHRvbG93ZXIoZmFjdG9yX2Rlc2NyaXB0X0EpKSB+ICJCb2R5LWxpa2UgZmFjdG9yIiwKICAgIGdyZXBsKCJtaW5kIiwgdG9sb3dlcihmYWN0b3JfZGVzY3JpcHRfQSkpIH4gIk1pbmQtbGlrZSBmYWN0b3IiLAogICAgZ3JlcGwoImhlYXJ0IiwgdG9sb3dlcihmYWN0b3JfZGVzY3JpcHRfQSkpIH4gIkhlYXJ0LWxpa2UgZmFjdG9yIiwKICAgIFRSVUUgfiAiT3RoZXIiKSkgJT4lCiAgbGVmdF9qb2luKGZhY3Rvcl9uYW1lc19hZHVsdHMgJT4lCiAgICAgICAgICAgICAgZnVsbF9qb2luKGZhY3Rvcl9uYW1lc19jaGlsZHJlbikgJT4lCiAgICAgICAgICAgICAgcmVuYW1lX2FsbCh+cGFzdGUwKC4sICJfQiIpKSkgJT4lCiAgbXV0YXRlKGZhY3Rvcl9iaG1fQiA9IGNhc2Vfd2hlbigKICAgIGdyZXBsKCJib2R5IiwgdG9sb3dlcihmYWN0b3JfZGVzY3JpcHRfQikpIH4gIkJvZHktbGlrZSBmYWN0b3IiLAogICAgZ3JlcGwoIm1pbmQiLCB0b2xvd2VyKGZhY3Rvcl9kZXNjcmlwdF9CKSkgfiAiTWluZC1saWtlIGZhY3RvciIsCiAgICBncmVwbCgiaGVhcnQiLCB0b2xvd2VyKGZhY3Rvcl9kZXNjcmlwdF9CKSkgfiAiSGVhcnQtbGlrZSBmYWN0b3IiLAogICAgVFJVRSB+ICJPdGhlciIpKSAlPiUKICBtdXRhdGVfYXQodmFycyhmYWN0b3JfYmhtX0EsIGZhY3Rvcl9iaG1fQiksCiAgICAgICAgICAgIH4gZmFjdG9yKC4sIGxldmVscyA9IGMoIkJvZHktbGlrZSBmYWN0b3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZWFydC1saWtlIGZhY3RvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pbmQtbGlrZSBmYWN0b3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciIpKSkgJT4lCiAgc2VsZWN0KC1jb3VudHJ5X0IsIC1hZ2VfZ3JvdXBfQikgJT4lCiAgcmVuYW1lKGNvdW50cnkgPSBjb3VudHJ5X0EsIGFnZV9ncm91cCA9IGFnZV9ncm91cF9BKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMSwgLCBpbmNsdWRlID0gRn0KZF9waGkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gZmFjdG9yX2JobV9BLCAKICAgICAgICAgICAgIHkgPSByZW9yZGVyKGZhY3Rvcl9iaG1fQiwgZGVzYyhmYWN0b3JfYmhtX0IpKSwgCiAgICAgICAgICAgICBmaWxsID0gZXN0aW1hdGUpKSArCiAgZmFjZXRfZ3JpZChjb3VudHJ5IH4gYWdlX2dyb3VwLCBzY2FsZXMgPSAiZnJlZSIsIHNwYWNlID0gImZyZWUiKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQoZXN0aW1hdGUsIDIpLCBuc21hbGwgPSAyKSkpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsKICBsYWJzKHggPSBOVUxMLCB5ID0gTlVMTCwgZmlsbCA9IHF1b3RlKHBoaSkpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjYsIGluY2x1ZGUgPSBGfQpkX3BoaSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBmYWN0b3JfYmhtX0EsIAogICAgICAgICAgICAgY29sb3IgPSBjb3VudHJ5LAogICAgICAgICAgICAgIyBzaGFwZSA9IGFnZV9ncm91cCwKICAgICAgICAgICAgIHkgPSBlc3RpbWF0ZSkpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsdHkgPSA1LCBjb2xvciA9ICJncmF5NTAiKSArCiAgZmFjZXRfZ3JpZChhZ2VfZ3JvdXAgfiBmYWN0b3JfYmhtX0IsIHNjYWxlcyA9ICJmcmVlX3giLCBzcGFjZSA9ICJmcmVlIikgKwogIGdlb21fcG9pbnRyYW5nZShhZXMoeW1pbiA9IGxvd2VyLCB5bWF4ID0gdXBwZXIpLAogICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSwKICAgICAgICAgICAgICAgICAgZmF0dGVuID0gMikgKwogICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChlc3RpbWF0ZSwgMiksIG5zbWFsbCA9IDIpKSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKE5BLCAxKSwgCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IHNlcSgwLCAxLCAwLjUpKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKSArCiAgbGFicyh4ID0gTlVMTCwgeSA9IHF1b3RlKHBoaSkpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDUsIGZpZy5hc3AgPSAwLjcsIGluY2x1ZGUgPSBGfQpkX3BoaSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBjb3VudHJ5LCAKICAgICAgICAgICAgIGNvbG9yID0gY291bnRyeSwKICAgICAgICAgICAgIGdyb3VwID0gYWdlX2dyb3VwLCBzaGFwZSA9IGFnZV9ncm91cCwKICAgICAgICAgICAgIHkgPSBlc3RpbWF0ZSkpICsKICBmYWNldF9ncmlkKGZhY3Rvcl9iaG1fQSB+IGZhY3Rvcl9iaG1fQiwgc2NhbGVzID0gImZyZWVfeCIsIHNwYWNlID0gImZyZWUiKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgbHR5ID0gMiwgY29sb3IgPSAiZ3JleTUwIikgKwogIGdlb21fcG9pbnRyYW5nZShhZXMoeW1pbiA9IGxvd2VyLCB5bWF4ID0gdXBwZXIpLAogICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogICMgZ2VvbV90ZXh0KGFlcyh5ID0gaWZlbHNlKGFnZV9ncm91cCA9PSAiYWR1bHRzIiwgCiAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgZXN0aW1hdGUgKyAwLjEsCiAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgZXN0aW1hdGUgLSAwLjA1KSwKICAjICAgICAgICAgICAgICAgbGFiZWwgPSBmb3JtYXQocm91bmQoZXN0aW1hdGUsIDIpLCBuc21hbGwgPSAyKSksCiAgIyAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYyhOQSwgMSksIAogICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBzZXEoMCwgMSwgMC41KSkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSkgKwogIGxhYnMoeCA9IE5VTEwsIHkgPSBxdW90ZShwaGkpLCAKICAgICAgIHNoYXBlID0gIkFnZSBncm91cCIsIHNpemUgPSAiQWdlIGdyb3VwIiwgCiAgICAgICBjb2xvciA9ICJTaXRlIikKYGBgCgpgYGB7cn0KY2F0KCJVUyBBRFVMVFNcbiIpCmVmYV91c19hZHVsdHMkUGhpCiMgKGVmYV91c19hZHVsdHMkUGhpKV4yCgpjYXQoIlxuVVMgQ0hJTERSRU5cbiIpCmVmYV91c19jaGlsZHJlbiRQaGkKIyAoZWZhX3VzX2NoaWxkcmVuJFBoaSleMgpgYGAKCmBgYHtyfQpjYXQoIkdIQU5BIEFEVUxUU1xuIikKZWZhX2doX2FkdWx0cyRQaGkKIyAoZWZhX2doX2FkdWx0cyRQaGkpXjIKCmNhdCgiXG5HSEFOQSBDSElMRFJFTlxuIikKZWZhX2doX2NoaWxkcmVuJFBoaQojIChlZmFfZ2hfY2hpbGRyZW4kUGhpKV4yCmBgYAoKYGBge3J9CmNhdCgiVEhBSUxBTkQgQURVTFRTXG4iKQplZmFfdGhfYWR1bHRzJFBoaQojIChlZmFfdGhfYWR1bHRzJFBoaSleMgoKY2F0KCJcblRIQUlMQU5EIENISUxEUkVOXG4iKQplZmFfdGhfY2hpbGRyZW4kUGhpCiMgKGVmYV90aF9jaGlsZHJlbiRQaGkpXjIKYGBgCgpgYGB7cn0KY2F0KCJDSElOQSBBRFVMVFNcbiIpCmVmYV9jaF9hZHVsdHMkUGhpCiMgKGVmYV9jaF9hZHVsdHMkUGhpKV4yCgpjYXQoIlxuQ0hJTkEgQ0hJTERSRU5cbiIpCmVmYV9jaF9jaGlsZHJlbiRQaGkKIyAoZWZhX2NoX2NoaWxkcmVuJFBoaSleMgpgYGAKCmBgYHtyfQpjYXQoIlZBTlVBVFUgQURVTFRTXG4iKQplZmFfdnRfYWR1bHRzJFBoaQojIChlZmFfdnRfYWR1bHRzJFBoaSleMgoKY2F0KCJcblZBTlVBVFUgQ0hJTERSRU5cbiIpCmVmYV92dF9jaGlsZHJlbiRQaGkKIyAoZWZhX3Z0X2NoaWxkcmVuJFBoaSleMgpgYGAKCg==